사칙연산 함수 와 연산 dictionarty를 통해 계산기 만들어보기
#더하기
from art import logo
def add(n1, n2):
return n1 + n2
#빼기
def subtract(n1, n2):
return n1 - n2
#곱하기
def multiply(n1, n2):
return n1 * n2
#나누기
def divide(n1, n2):
return n1 / n2
operations = {
"+": add,
"-": subtract,
"*": multiply,
"/": divide,
}
구현항목)
: 첫 계산 완료 후 'y' 입력 시, 첫 계산의 값이 저장되어 다음 계산에 사용하는 기능 구현
: 'n' 입력 시 계산 종료
def calculator():
print(logo)
num1 = float(input("What's the first number?: "))
for symbol in operations:
print(symbol)
calculation_end = False
while not calculation_end:
operation_symbol = input("Pick an operation: ")
num2 = float(input("What's the next number?: "))
calculation_function = operations[operation_symbol]
answer = calculation_function(num1, num2)
print(f"{num1} {operation_symbol} {num2} = {answer}")
if input(f'Type \'y\' to continue calculating with {answer}, or type \'n\' to exit. : ') == "y":
num1 = answer
#answer를 num1 값으로 저장하여 while 문이 반복될 때 num1 값으로 사용한다.
else:
calculation_end = True
calculator()
추가 구현항목)
: 계산을 종료했을 때 ('n' 입력 시) 계산이 처음부터 다시 시작되는 기능 구현
=> 함수를 재귀 호출하여 계산을 처음부터 다시 시작할 수 있다.
def calculator():
print(logo)
num1 = float(input("What's the first number?: "))
for symbol in operations:
print(symbol)
calculation_end = False
while not calculation_end:
operation_symbol = input("Pick an operation: ")
num2 = float(input("What's the next number?: "))
calculation_function = operations[operation_symbol]
answer = calculation_function(num1, num2)
print(f"{num1} {operation_symbol} {num2} = {answer}")
if input(f'Type \'y\' to continue calculating with {answer}, or type \'n\' to exit. : ') == "y":
num1 = answer
#answer를 num1 값으로 저장하여 while 문이 반복될 때 num1 값으로 사용한다.
else:
calculation_end = True
calculator() ##재귀호출
calculator()
else 문에 calculator() 함수를 재귀 호출하면,
while 문을 통해 저장되었던 정보가 사라지고 처음으로 돌아가 시작한다.
'python' 카테고리의 다른 글
[python] 블랙잭 게임 만들기 (0) | 2024.06.06 |
---|---|
[python] return 이해하기 (0) | 2024.06.02 |
[python] #연습문제 - 비밀 경매 프로그램 생성기 (0) | 2024.06.02 |
[python] 리스트 안에 새로운 딕셔너리 추가하기 (0) | 2024.06.02 |
[python] #연습문제 - caesar code 생성하기 (0) | 2024.06.01 |