소연의_개발일지
article thumbnail

1. 문제

파이썬으로 계산기를 만들기.

덧셈(+), 뺄셈(-), 나눗셈(/), 곱셈(*) 이 가능하게 하기

 

사용자가 첫번째 숫자를 입력하고 - 부호를 입력하고 - 두 번째 숫자가 입력되면 계산이 실행,
사용자가 y 입력하면 실행된 결과를 첫번째 숫자로 다시 받아 계산 진행
사용자가 n 입력하면 입력 숫자를 초기화하고 계산기 다시 시작

 

사용함수: return, while, def, input, if문 등

 


2. 코드 실행 예시


3. 고민한 부분

1. while 문 사용하는데 어떻게 초기화하고 다시 계산기 시작하게 하지..? 코드가 너무 길어진다 

 -> 계산기를 def 함수로 만들어주면 해결되는 문제였음. 

2. 정수가 아닌 소수를 작성하면 오류가 생긴다..

 -> input 속에 집어넣은 숫자를 int가 아닌 float으로 바꿔주면 해결되는 문제였음~

3. 처음 숫자로 반환하면 오류가 뜨는데 어떻게 하지...

 -> 그냥 단순하게 num1 = answer 해주면 되는 문제였음~ ㅋ

정말 단순한 문제를 어렵게 푼다....

이걸 30분 쳐다보고 있었다 

주말에 다시 풀어볼 것~


4. 코드 정답

<python />
#Calculator logo = """ _____________________ | _________________ | | | Pythonista 0. | | .----------------. .----------------. .----------------. .----------------. | |_________________| | | .--------------. || .--------------. || .--------------. || .--------------. | | ___ ___ ___ ___ | | | ______ | || | __ | || | _____ | || | ______ | | | | 7 | 8 | 9 | | + | | | | .' ___ | | || | / \ | || | |_ _| | || | .' ___ | | | | |___|___|___| |___| | | | / .' \_| | || | / /\ \ | || | | | | || | / .' \_| | | | | 4 | 5 | 6 | | - | | | | | | | || | / ____ \ | || | | | _ | || | | | | | | |___|___|___| |___| | | | \ `.___.'\ | || | _/ / \ \_ | || | _| |__/ | | || | \ `.___.'\ | | | | 1 | 2 | 3 | | x | | | | `._____.' | || ||____| |____|| || | |________| | || | `._____.' | | | |___|___|___| |___| | | | | || | | || | | || | | | | | . | 0 | = | | / | | | '--------------' || '--------------' || '--------------' || '--------------' | | |___|___|___| |___| | '----------------' '----------------' '----------------' '----------------' |_____________________| """ print(logo) # 로고 출력 def add(n1, n2): # 더하기 함수 return n1 + n2 def sub(n1, n2): # 빼기 함수 return n1 - n2 def mul(n1, n2): # 곱하기 함수 return n1 * n2 def div(n1, n2): # 나누기 함수 return n1 / n2 operation = { # 부호:함수 로 딕셔너리 만들기 "+": add, "-": sub, "*": mul, "/": div } def calculator(): num1 = float(input("What's the first number?: ")) # 첫 번째 숫자 묻기 = num1에 저장 for symbol in operation: # 부호 차례대로 나열하기(딕셔너리 키 부분) print(symbol) # 부호 출력 should_continue = True # while 반복문을 위해 계속 진행 = True 항목 넣기 while should_continue: # while 반복문이 True이면 계속 반복한다. operation_symbol = input("Pick an operation: ") # 부호 묻기 = operation_symbol에 저장 num2 = float(input("What's the second number?: ")) # 두 번째 숫자 묻기 = num2에 저장 calculation_function = operation[operation_symbol] # operation딕셔너리[물은부호] = 값 = calculation_funciton에 저장 answer = calculation_function(num1, num2) # calculation_fuction은 위 4가지중 하나의 함수에 적용됨. 뒤에 num1, num2가 불러와져서 계산 = answer로 저장됨 print(f"{num1} {operation_symbol} {num2} = {answer}") # 출력 if input(f"Type 'y' to continue calculating with {answer} or type 'n' to start a new calculation.") == "y": #만약 사용자가 계속하기를 묻는다면 y, 새로운 숫자로 시작하길 원하면 n 입력. ★ 여기서 input을 새로운 값으로 저장하지 않고 if문에 바로 집어넣어서 코드 줄임 num1 = answer # y 이면 답이 처음 숫자로 반환됨. else: should_continue = False # n 입력시 지금까지 입력한 정보 삭제(flase문으로 while문 종료) calculator() #처음부터 다시 시작 calculator()
profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!