소연의_개발일지
article thumbnail

문제

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

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

 

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

 

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

 


코드 실행 예시


고민한 부분

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

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

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

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

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

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

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

이걸 30분 쳐다보고 있었다 

주말에 다시 풀어볼 것~


코드 정답

#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

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