[제로베이스 데이터 취업스쿨] 23.06.13 스터디 노트

김준호·2023년 6월 13일
0
post-thumbnail

계속해서 자료구조나 기초수학 관련 문제가 나온다.
뒤에 강의가 있지만 하루이틀 만에 들을 양이 아니다...
자료구조와 기초수학을 먼저 듣고 문제를 풀어야 하나 고민이다...

파이썬 중급 문제 풀이(모듈~예외처리)

문제1. 순열(Permutation)

  • 방법1. n이 어떤 수가 들어가는지 로그 출력

premultatioin.py

def getPermutationCnt(n,r):
    result = 1

    for n in range(n,n-r, -1):
        #n이 무슨 숫자가 나오는지
        print('n:{}'.format(n))
        result = result * n

    return result

main04.py

import permultation as pt
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))

print(f'{numN}P{numR}: {pt.getPermutationCnt(numN,numR)}')
numN 입력: 8
numR 입력: 3
n:8
n:7
n:6
8P3: 336
  • 방법2. 로그가 안나오게 매개변수에 logPrint = True를 추가해 조건문을 만든다.
  • 로그가 안나오게 하려면 main04 실행파일에서 함수호출부에 logPrint=False 매개변수 추가

premultatioin.py

def getPermutationCnt(n,r, logPrint = True):
    result = 1

    for n in range(n,n-r, -1):
        #n이 무슨 숫자가 나오는지
        if logPrint: print('n:{}'.format(n))
        result = result * n

    return result

main04.py

import permultation as pt

numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))

print(f'{numN}P{numR}: {pt.getPermutationCnt(numN,numR,logPrint=False)}')
numN 입력: 8
numR 입력: 3
8P3: 336
  • 방법3. itertools에 permutations 함수가 있다.
    permutations함수 안에는 경우의 수도 출력해주는 기능이 있다.

permulrarion.py

from itertools import permutations

def getPermutarions(ns,r):

    pList = list(permutations(ns,r))
    print(f'{len(ns)}P{r} 개수 : {len(pList)}')

    for n in permutations(ns,r):
        print(n, end='')

main04.py

import permultation as pt

listVar = [1,2,3,4,5,6,7,8]
rVar = 3
pt.getPermutarions(listVar,rVar)
8P3 개수 : 336
(1, 2, 3)(1, 2, 4)(1, 2, 5)(1, 2, 6)(1, 2, 7)(1, 2, 8)(1, 3, 2)(1, 3, 4)(1, 3, 5)(1, 3, 6)(1, 3, 7)(1, 3, 8)(1, 4, 2)(1, 4, 3)(1, 4, 5)(1, 4, 6)(1, 4, 7).....

문제2. 조합(Combination)

  • 방법1. nCr 공식은 nPr / r!

combination.py

def getCombinationCnt(n,r):

    #P의 결과 초기값
    resultP = 1
    #r팩토리얼 결과 초기값
    resultR = 1
    #Combination 결과 초기값
    resultC = 1

    for n in range(n,(n-r),-1):
        resultP = resultP * n

    for n in range(r,0 ,-1):
        resultR = resultR * n

    resultC = int(resultP / resultR)

    return resultC

main05.py

import combination as cb

nNum = int(input('numN입력: '))
rNum = int(input('numR입력: '))


print(f'{nNum}C{rNum}: {cb.getCombinationCnt(nNum,rNum)}')
numN입력: 8
numR입력: 3
8C3: 56
  • 방법2. itertools모듈에 combinations 함수 사용

combination.py

from itertools import combinations

def getCombinations(ns, r):
    #list()함수 알아보기
    cList = list(combinations(ns,r))
    print(f'{len(ns)}C{r}: {len(cList)}')
    
    #모든 경우의 수 출력 반복문
    for n in combinations(ns,r):
        print(n,end='')

main05.py

#모듈을 이용한 조합 계산
import combination as cb
listVar = [1,2,3,4,5,6,7,8]
rVar = 3
cb.getCombinations(listVar,rVar)
8C3: 56
(1, 2, 3)(1, 2, 4)(1, 2, 5)(1, 2, 6)(1, 2, 7)(1, 2, 8)(1, 3, 4)(1, 3, 5)(1, 3, 6)(1, 3, 7)(1, 3, 8)(1, 4, 5)(1, 4, 6)(1, 4, 7)(1, 4, 8)(1, 5, 6)....

문제3. 공과금, 수입 대비 공과금

  • 변수값을 설정하는 함수(setter), 변수값을 얻어오는 함수(getter)

utilityBill.py

#수입, 공과금 처리 모듈
income = 0

#이런 변수 값을 설정하는 함수(set), 얻어오는 함수(get)만들어 준다. 보통 셋터, 겟터라 한다.
waterPrice = 0; electricPrice=0; gasPrice=0

#셋터
def setIncome(ic):
    global income
    income = ic
#겟터
def getIncome():
    return income

#셋터
def setWaterPrice(wp):
    global waterPrice
    waterPrice = wp
#겟터
def getWaterPrice(wp):
    return waterPrice

#셋터
def setElectricPrice(ec):
    global electricPrice
    electricPrice = ec
#겟터
def getElectricPrice():
    return electricPrice

#셋터
def setGasPrice(gc):
    global gasPrice
    gasPrice = gc
#겟터
def getGasPrice():
    return gasPrice

def getUtilityBill():
    result = waterPrice + electricPrice + gasPrice
    return result

def getUtilityBillRate():
    result = getUtilityBill()/getIncome() * 100
    return result

main06.py

import utilityBill as ub

inputIncome = int(input('수입 입력: '))
ub.setIncome(inputIncome)

inputWaterPrice = int(input('수도요금 입력: '))
ub.setWaterPrice(inputWaterPrice)

inputElectricPrice = int(input('전기요금 입력: '))
ub.setElectricPrice(inputElectricPrice)

inputGasPrice = int(input('가스요금 입력: '))
ub.setGasPrice(inputGasPrice)


print('공과금 : {} 원'.format(format(ub.getUtilityBill(), ',')))
print(f'수입 대비 공과금 비율 : {ub.getUtilityBillRate()}%')
수입 입력: 3000000
수도요금 입력: 15000
전기요금 입력: 17500
가스요금 입력: 125000
공과금 : 157500 원
공과금 : 157,500 원
수입 대비 공과금 비율 : 5.25%

문제4. 패키지 만들어 호출

  • 패키지 구성 후 각 모듈마다 함수 만들기

baisic_operator.py

def addCal(n1,n2):
    return round(n1 + n2, 2)

def subCal(n1,n2):
    return round(n1 + n2, 2)

def mulCal(n1,n2):
    return round(n1 * n2, 2)

def divCal(n1,n2):
    return round(n1 / n2, 2)

developer_operator.py

def modCal(n1,n2):
    return round(n1 % n2, 2)

def floorCal(n1,n2):
    return round(n1 // n2, 2)

def powCal(n1,n2):
    return round(n1 ** n2, 2)

circle_area.py

def calCircleArea(r):
    return round(r**2*3.14,2)

triangle_square_area.py

def calTriangleArea (w,h):
    return round(w*h/2 ,2)

def calSquareArea(w,h):
    return round(w*h,2)

main07.py

#패키지 모듈 호출
from arithmetic import basic_operator as bo
from arithmetic import developer_operator as do
from shape import triangle_square_area as tsa
from shape import circle_area as ca

#계산기 
inputNumber1 = float(input('숫자1 입력: '))
inputNumber2 = float(input('숫자2 입력: '))

print(f'{inputNumber1} + {inputNumber2} = {bo.addCal(inputNumber1,inputNumber2)}')
print(f'{inputNumber1} - {inputNumber2} = {bo.subCal(inputNumber1,inputNumber2)}')
print(f'{inputNumber1} * {inputNumber2} = {bo.mulCal(inputNumber1,inputNumber2)}')
print(f'{inputNumber1} / {inputNumber2} = {bo.divCal(inputNumber1,inputNumber2)}')

print(f'{inputNumber1} % {inputNumber2} = {do.modCal(inputNumber1,inputNumber2)}')
print(f'{inputNumber1} // {inputNumber2} = {do.floorCal(inputNumber1,inputNumber2)}')
print(f'{inputNumber1} ** {inputNumber2} = {do.powCal(inputNumber1,inputNumber2)}')


#삼각형,사각형 넓이
inputWidth = float(input('가로길이 입력: '))
inputHeight = float(input('세로길이 입력: '))
print(f'삼각형 넓이 : {tsa.calTriangleArea(inputWidth,inputHeight)}')
print(f'사각형 넓이 : {tsa.calSquareArea(inputWidth,inputHeight)}')

#원 넓이
inputRadius = float(input('반지름 길이 입력: '))
print(f'원의 넓이 : {ca.calCircleArea(inputRadius)}')
숫자1 입력: 10.5
숫자2 입력: 2
10.5 + 2.0 = 12.5
10.5 - 2.0 = 12.5
10.5 * 2.0 = 21.0
10.5 / 2.0 = 5.25
10.5 % 2.0 = 0.5
10.5 // 2.0 = 5.0
10.5 ** 2.0 = 110.25
가로길이 입력: 11.5
세로길이 입력: 8
삼각형 넓이 : 46.0
사각형 넓이 : 92.0
반지름 길이 입력: 6.5
원의 넓이 : 132.66

문제5. 회원가입, 로그인

member.py

class Member:
    def __init__(self,i,p):
        self.id = i
        self.pw = p


class MemberRepository:
    def __init__(self):
        #{}:딕셔너리, {키:밸류}
        self.members = {}

    #m은 Member클래스에서 생성된 맴버
    def addMember(self, m):
        #키 값은 id, 밸류값은 pw
        self.members[m.id] = m.pw

    def loginMember(self,i,p):
        isMember = i in self.members

        if isMember and self.members[i] == p:
            print(f'{i}: log-in success!')
        else:
            print(f'{i}: log-in fail')

    def removeMember(self,i,p):
        del self.members[i]

    def printMembers(self):
        for mk in self.members.keys():
            print(f'ID : {mk}')
            print(f'PW : {self.members[mk]}')

main01.py

import maember as mb

mems = mb.MemberRepository()

#3명의 아이디,비번 입력해 회원가입
for i in range(3):
    mId = input('아이디 입력: ')
    mPw = input('비밀번호 입력: ')

    mem = mb.Member(mId,mPw)
    mems.addMember(mem)
    
#회원가입이 잘 되었는지 회원 조회
mems.printMembers()

#회원 로그인 성공 유무 확인
mems.loginMember('abc@gmail.com','1234')
mems.loginMember('def@gmail.com','5678')
mems.loginMember('ghi@gmail.com','9012')

#회원 삭제
mems.removeMember('abc@gmail.com','1234')

#삭제가 잘되었는지 현재 회원 조회
mems.printMembers()
아이디 입력: abc@gmail.com
비밀번호 입력: 1234
아이디 입력: def@gmail.com5678
비밀번호 입력: 5678
아이디 입력: ghi@gmail.com
비밀번호 입력: 9012
ID : abc@gmail.com
PW : 1234
ID : def@gmail.com5678
PW : 5678
ID : ghi@gmail.com
PW : 9012
abc@gmail.com: log-in success!
def@gmail.com: log-in fail
ghi@gmail.com: log-in success!
ID : def@gmail.com5678
PW : 5678
ID : ghi@gmail.com
PW : 9012

문제6. TV기능 상속

smartTV.py

class NormalTV:

    def __init__(self,i=32,c='black',r='full-HD'):
        self.inch = i
        self.color = c
        self.resolution = r
        self.smartTV = 'off'
        self.arTV  = 'off'

    def turnOn(self):
        print('TV power on!!')

    def turnOff(self):
        print('TV power off!!')

    def printTvInfo(self):
        print(f'inch = {self.inch}inch')
        print(f'inch = {self.color}')
        print(f'inch = {self.resolution}')
        print(f'inch = {self.smartTV}')
        print(f'inch = {self.arTV}')

class Tv4K(NormalTV):
    def __init__(self,i,c,r='4K'):
        super().__init__(i,c,r)

    def setSmartTv(self,s ):
        self.smartTV = s

class Tv8K(NormalTV):
    def __init__(self,i,c,r='8K'):
        super().__init__(i,c,r)

    def setSmartTv(self,s ):
        self.smartTV = s

    def setAiTv(self,a):
        self.aiTv = a

main02.py

import smartTV as st

my4kTv = st.Tv4K('65','silver','4K')
my4kTv.setSmartTv('on')
my4kTv.turnOn()
my4kTv.printTvInfo()
my4kTv.turnOff()

print('='*30)
friend4kTv = st.Tv4K('55','white','4K')
my4kTv.setSmartTv('off')
my4kTv.turnOn()
my4kTv.printTvInfo()
my4kTv.turnOff()

print()
print('='*30)
my8kTv = st.Tv8K('75','black','8K')
my8kTv.setSmartTv('on')
my8kTv.setAiTv('on')
my8kTv.turnOn()
my8kTv.printTvInfo()
my8kTv.turnOff()
print('='*30)
friend8kTv = st.Tv8K('75','orange','8K')
my8kTv.setSmartTv('off')
my8kTv.setAiTv('off')
my8kTv.turnOn()
my8kTv.printTvInfo()
my8kTv.turnOff()
TV power on!!
inch = 65inch
color = silver
resolution = 4K
smartTV = on
aiTV = off
TV power off!!
==============================
TV power on!!
inch = 65inch
color = silver
resolution = 4K
smartTV = off
aiTV = off
TV power off!!

TV power on!!
inch = 75inch
color = black
resolution = 8K
smartTV = on
aiTV = off
TV power off!!
==============================
TV power on!!
inch = 75inch
color = black
resolution = 8K
smartTV = off
aiTV = off
TV power off!!

문제7. 도서관 관리 프로그램

book.py

class Book:
    def __init__(self,name, price, isbn):
        self.bName = name
        self.bPrice = price
        self.bIsbn = isbn

class BookRepository:

    def __init__(self):
        self.bDic = {}

    def registBook(self, b):
        self.bDic[b.bIsbn] = b

    def removeBook(self, isbn):
        del self.bDic[isbn]

    def printBooksInfo(self):
        for isbn in self.bDic.keys():
            b = self.bDic[isbn]
            print(f'{b.bName},{b.bPrice},{b.bIsbn}')

    def printBookInfo(self, isbn):
        if isbn in self.bDic:
            b = self.bDic[isbn]
            print(f'{b.bName},{b.bPrice},{b.bIsbn}')
        else:
            print('Lookup result does not exist')

main03.py

import book as bk

myBRepository = bk.BookRepository()

myBRepository.registBook(bk.Book('python',20000,'12345678'))
myBRepository.registBook(bk.Book('java',25000,'1342358'))
myBRepository.registBook(bk.Book('C/C++',27000,'14324132678'))

myBRepository.printBooksInfo()
print('='*30)
myBRepository.printBookInfo('1342358')
print('='*30)
myBRepository.removeBook('12345678')
myBRepository.printBooksInfo()
python,20000,12345678
java,25000,1342358
C/C++,27000,14324132678
==============================
java,25000,1342358
==============================
java,25000,1342358
C/C++,27000,14324132678

문제8. 영한사전

ADictionary.py

from abc import ABCMeta
from abc import abstractmethod

class AbsDictionary(metaclass=ABCMeta):
    def __init__(self):
        self.wordDic = {}

    #등록된 단어 :w1, 번역된 단어:w2
    @abstractmethod
    def registWord(self, w1, w2):
        pass

    @abstractmethod
    def removeWord(self, w1):
        pass

    @abstractmethod
    def updateWord(self, w1, w2):
        pass

    @abstractmethod
    def searchWord(self, w1):
        pass


class KorToEng(AbsDictionary):

    def __init__(self):
        super().__init__()
	
    #단어 등록
    def registWord(self, w1, w2):
        print(f'[KorToEng] registWord() : {w1} to {w2}')
        self.wordDic[w1] = w2

	#등록된 단어 삭제
    def removeWord(self, w1):
        print(f'[KorToEng] removeWord() : {w1}')
        del self.wordDic[w1]

	#등록된 단어 업데이트
    def updateWord(self, w1, w2):
        print(f'[KorToEng] updateWord() : {w1} to {w2}')
        self.wordDic[w1] = w2

	#등록된 단어 검색
    def searchWord(self, w1):
        print(f'[KorToEng] searchWord() : {w1}')
        return self.wordDic[w1]
	#등록된 단어 출력
    def printWords(self):
        for k in self.wordDic.keys():
            print(f'{k}: {self.wordDic[k]}')

main04.py

import ADictionary as dic

#객체 생성
kTe = dic.KorToEng()

#단어 등록
kTe.registWord('책','bok')
kTe.registWord('나비','butterfly')
kTe.registWord('연필','pencil')
kTe.registWord('학생','studend')
kTe.registWord('선생님','teacher')
#등록된 단어 출력
kTe.printWords()

#등록된 단어 업데이트
kTe.updateWord('책', 'book')
kTe.printWords()

#등록된 단어 검색
print(f'{kTe.searchWord("책")}')

#등록된 단어 삭제
kTe.removeWord('책')
kTe.printWords()
[KorToEng] registWord() : 책 to bok
[KorToEng] registWord() : 나비 to butterfly
[KorToEng] registWord() : 연필 to pencil
[KorToEng] registWord() : 학생 to studend
[KorToEng] registWord() : 선생님 to teacher
책: bok
나비: butterfly
연필: pencil
학생: studend
선생님: teacher
[KorToEng] updateWord() : 책 to book
책: book
나비: butterfly
연필: pencil
학생: studend
선생님: teacher
[KorToEng] searchWord() : 책
book
[KorToEng] removeWord() : 책
나비: butterfly
연필: pencil
학생: studend
선생님: teacher

문제9. 주사위 게임

랜덤하게 숫자 생성하여 컴퓨터와 유저 대결 결과 출력

DiceGame.py

import random
class Dice:
    def __init__(self):
        self.cNum = 0
        self.uNum = 0

    #컴퓨터 난수, 사용자 난수 셋팅
    def setCnum(self):
        print('[Dice] setCnum()')
        self.cNum = random.randint(1,6)
    def setUnum(self):
        print('[Dice] setUnum()')
        self.uNum = random.randint(1,6)

    #주사위 게임 시작
    def startGame(self):
        print('[Dice] stratGame()')

        self.setCnum()
        self.setUnum()
    
    #결과 출력
    def printResult(self):
        print('[Dice] printResult()')
        
        if self.cNum == 0 or self.uNum == 0:
            print('주사위 숫자 설정 전 입니다.')
            
        else:
            if self.cNum > self.uNum:
                print(f'컴퓨터 VS 유저 : {self.cNum} VS {self.uNum}>> 컴퓨터 승')
            elif self.cNum < self.uNum:
                print(f'컴퓨터 VS 유저 : {self.cNum} VS {self.uNum}>> 유저 승')
            elif self.cNum == self.uNum:
                print(f'컴퓨터 VS 유저 : {self.cNum} VS {self.uNum}>> 무승부')

main05.py

import DiceGame as dg

dc = dg.Dice()
dc.startGame()
dc.printResult()
[Dice] stratGame()
[Dice] setCnum()
[Dice] setUnum()
[Dice] printResult()
컴퓨터 VS 유저 : 2 VS 4>> 유저 승

문제10. 자동차 경주 게임

1초에 한바퀴 돈다는 가정

car_game\car.py

import random
class Car:

    def __init__(self, n='fire car', c='red', s=200):
        self.name =n
        self.color = c
        self.max_speed = s
        self.distance = 0

    def printCarInfo(self):
        print(f'name: {self.name}, color : {self.color}, max_speed : {self.max_speed}')

    def controlSpeed(self):
        return random.randint(0, self.max_speed)

    def getDistanceForHour(self):
        return self.controlSpeed() * 1

car_game\racing.py

#잠시 프로그램 중지 시킬 수 있음
from time import sleep


class CarRacing:

    def __init__(self):
        self.cars = []
        self.rankings = []

    def startRacing(self):
        for i in range(10):
            print(f'Racoing : {i+1}바퀴')
            for car in self.cars:
                car.distance += car.getDistanceForHour()
            #1초 동안 프로그램 정지
            sleep(1)
            self.printCurrentCarDistance()

    def printCurrentCarDistance(self):
        for car in self.cars:
            print(f'{car.name}: {car.distance}\t\t', end='')
        print()

    def addCar(self,c):
        self.cars.append(c)

main06.py

from car_game import racing as rc
from car_game import car

myCarGame = rc.CarRacing()
car01 =car.Car('car01','white',250)
car02 =car.Car('car02','black',200)
car03 =car.Car('car03','yellow',220)
car04 =car.Car('car04','red',280)
car05 =car.Car('car05','blue',150)

myCarGame.addCar(car01)
myCarGame.addCar(car02)
myCarGame.addCar(car03)
myCarGame.addCar(car04)
myCarGame.addCar(car05)

myCarGame.startRacing()
Racoing : 1바퀴
car01: 11		car02: 124		car03: 83		car04: 129		car05: 9		
Racoing : 2바퀴
car01: 205		car02: 162		car03: 111		car04: 151		car05: 38		
Racoing : 3바퀴
car01: 264		car02: 168		car03: 273		car04: 400		car05: 48		
Racoing : 4바퀴
car01: 456		car02: 169		car03: 444		car04: 597		car05: 160		
Racoing : 5바퀴
car01: 555		car02: 189		car03: 596		car04: 613		car05: 208		
Racoing : 6바퀴
car01: 654		car02: 204		car03: 598		car04: 835		car05: 274		
Racoing : 7바퀴
car01: 846		car02: 398		car03: 801		car04: 860		car05: 369		
Racoing : 8바퀴
car01: 847		car02: 538		car03: 823		car04: 967		car05: 376		
Racoing : 9바퀴
car01: 1089		car02: 715		car03: 1039		car04: 1006		car05: 519		
Racoing : 10바퀴
car01: 1274		car02: 770		car03: 1149		car04: 1026		car05: 534	

문제11. Mp3플레이어

mp3player.py

from time import sleep
import random

class Song:

    def __init__(self, t, s, pt):
        self.title = t
        self.singer = s
        self.playtime = pt

    def printSongInfo(self):
        print(f'Title : {self.title}, Singer : {self.singer}, PlayTime : {self.playtime}')


class Player:

    def __init__(self):
        self.songList = []
        self.isLoop = False

    def addSong(self,s):
        self.songList.append(s)

    def play(self):
        if self.isLoop:
            while self.isLoop:
                for s in self.songList:
                    print(f'Title : {s.title}, Singer : {s.singer}, PlayTime : {s.playtime}sec')
                    sleep(s.playtime)

        else:
            for s in self.songList:
                print(f'Title : {s.title}, Singer : {s.singer}, PlayTime : {s.playtime}sec')
                sleep(s.playtime)

    def suffle(self):
        random.shuffle(self.songList)

    def setIsLoop(self, flag):
        self.isLoop = flag

main07.py

import mp3player as mp3

song01 = mp3.Song('신호등','이무진',3)
song02 = mp3.Song('Permission','BTS',4)
song03 = mp3.Song('Weekend','태연',2)

player = mp3.Player()

#플레이어에 노래 추가
player.addSong(song01)
player.addSong(song02)
player.addSong(song03)

#True이면 무한반복
player.setIsLoop(False)

#매번 결과값이 다를 것
player.suffle()
player.play()
Title : Permission, Singer : BTS, PlayTime : 4sec
Title : 신호등, Singer : 이무진, PlayTime : 3sec
Title : Weekend, Singer : 태연, PlayTime : 2sec

문제12. 계산기 예외처리

계산식에서 나올 수 있는 오류는 입력한 값의 자료형이 다르거나
나눗셈 관련 연산에서 0으로 나눴을 때

calculator.py

def add(n1,n2):
    print('덧셈 연산')
    try:
        n1 = float(n1)
    except:
        print('첫번째 피연산자는 숫자가 아닙니다')
        return 
    
    try:
        n2 = float(n2)
    except:
        print('두번째 피연산자는 숫자가 아닙니다')
        return 
    
    print(f'{n1}+{n2}={n1+n2}')


def sub(n1, n2):
    print('뺄셈 연산')
    try:
        n1 = float(n1)
    except:
        print('첫번째 피연산자는 숫자가 아닙니다')
        return

    try:
        n2 = float(n2)
    except:
        print('두번째 피연산자는 숫자가 아닙니다')
        return

    print(f'{n1}-{n2}={n1 - n2}')


def mul(n1, n2):
    print('곱셈 연산')
    try:
        n1 = float(n1)
    except:
        print('첫번째 피연산자는 숫자가 아닙니다')
        return

    try:
        n2 = float(n2)
    except:
        print('두번째 피연산자는 숫자가 아닙니다')
        return

    print(f'{n1}*{n2}={n1 * n2}')


def div(n1, n2):
    print('나눗셈 연산')
    try:
        n1 = float(n1)
    except:
        print('첫번째 피연산자는 숫자가 아닙니다')
        return

    try:
        n2 = float(n2)
    except:
        print('두번째 피연산자는 숫자가 아닙니다')
        return

    if n2 == 0:
        print('0으로 나눌 수 없습니다.')
        return

    print(f'{n1}+{n2}={n1 / n2}')

'''
    #파이썬 기본 제공 나눗셈 예외처리
    try:
        print(f'{n1}+{n2}={n1 / n2}')
    except ZeroDivisionError as e:
        print(e)
        print('0으로 나눌 수 없습니다.')
'''

main01.py

import calculator as cal


num1 = input('첫번째 피연산자 : ')
num2 = input('두번째 피연산자 : ')
cal.add(num1,num2)

cal.div(num1,num2)
첫번째 피연산자 : 10
두번째 피연산자 : 5
덧셈 연산
10.0+5.0=15.0
나눗셈 연산
10.0+5.0=2.0
첫번째 피연산자 : 10
두번째 피연산자 : asd
덧셈 연산
두번째 피연산자는 숫자가 아닙니다
나눗셈 연산
두번째 피연산자는 숫자가 아닙니다
첫번째 피연산자 : 10
두번째 피연산자 : 0
덧셈 연산
10.0+0.0=10.0
나눗셈 연산
0으로 나눌 수 없습니다.
profile
취업공부

0개의 댓글