문제
파이썬으로 계산기를 만들기.
덧셈(+), 뺄셈(-), 나눗셈(/), 곱셈(*) 이 가능하게 하기
사용자가 첫번째 숫자를 입력하고 - 부호를 입력하고 - 두 번째 숫자가 입력되면 계산이 실행,
사용자가 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()
'개발공부 > Python' 카테고리의 다른 글
[점프 투 파이썬] 예제 풀기_112p (0) | 2023.04.10 |
---|---|
PEP 8: E701 multiple statements on one line (colon) 에러 해결 (0) | 2023.04.10 |
파이썬_튜플(tuple) (0) | 2023.03.17 |
파이썬_글자 뒤집기(string[::-1]) (0) | 2023.03.16 |
파이썬_return 예제 풀기 (0) | 2023.03.16 |