파이썬으로 간단한 계산기 만들기: 입력, 조건문, 예외 처리 한 번에 연습하기
지난 글에서 try-except로 오류를 처리하는 방법을 정리했어요. 이번에는 그 내용을 활용해서 파이썬 계산기 만들기에 도전해 볼게요. 작은 프로그램이지만 입력받기, 조건문, 함수, 반복문, 예외 처리가 전부 들어가서 연습용으로 아주 좋아요.
이번 글에서 만들 것
- 숫자 두 개와 연산자(+, -, *, /)를 입력받아서 결과를 알려 주는 계산기
- 숫자가 아닌 걸 넣거나 0으로 나눠도 멈추지 않는 계산기
- q를 입력하면 끝나는 계산기
1단계: 계산하는 함수 만들기
먼저 계산 부분만 따로 함수로 만들어요. 함수로 분리해 두면 나중에 코드를 고치기도 쉽고 읽기도 편해요.
def calculate(a, op, b):
if op == "+":
return a + b
elif op == "-":
return a - b
elif op == "*":
return a * b
elif op == "/":
return a / b
else:
return None
연산자가 네 가지 중 하나가 아니면 None을 돌려줘요. 이 값으로 “잘못된 연산자”를 구분할 거예요.
2단계: 입력받고 반복하기
계산을 한 번만 하고 끝내면 아쉬우니까 while True로 계속 반복하다가, q를 입력하면 break로 빠져나오게 해요.
while True:
first = input("첫 번째 숫자 (종료하려면 q): ")
if first == "q":
print("계산기를 종료합니다.")
break
op = input("연산자 (+, -, *, /): ")
second = input("두 번째 숫자: ")
input()은 무엇을 입력하든 문자열로 돌려주기 때문에, 계산하려면 숫자로 바꿔야 해요. 이 부분은 다음 단계에서 처리해요.
3단계: try-except로 오류 막기
숫자로 바꾸는 float()는 “abc” 같은 글자를 만나면 ValueError를 일으키고, 0으로 나누면 ZeroDivisionError가 나요. 이 두 가지를 try-except로 잡아 줘요.
try:
a = float(first)
b = float(second)
result = calculate(a, op, b)
if result is None:
print("지원하지 않는 연산자예요. + - * / 중에서 골라 주세요.")
else:
print(f"결과: {result:g}")
except ValueError:
print("숫자만 입력해 주세요.")
except ZeroDivisionError:
print("0으로는 나눌 수 없어요.")
{result:g}는 7.0처럼 불필요한 소수점 이하를 빼고 7로 깔끔하게 보여 주는 서식이에요.
전체 코드
def calculate(a, op, b):
if op == "+":
return a + b
elif op == "-":
return a - b
elif op == "*":
return a * b
elif op == "/":
return a / b
else:
return None
while True:
first = input("첫 번째 숫자 (종료하려면 q): ")
if first == "q":
print("계산기를 종료합니다.")
break
op = input("연산자 (+, -, *, /): ")
second = input("두 번째 숫자: ")
try:
a = float(first)
b = float(second)
result = calculate(a, op, b)
if result is None:
print("지원하지 않는 연산자예요. + - * / 중에서 골라 주세요.")
else:
print(f"결과: {result:g}")
except ValueError:
print("숫자만 입력해 주세요.")
except ZeroDivisionError:
print("0으로는 나눌 수 없어요.")
실행 결과 예시
첫 번째 숫자 (종료하려면 q): 10
연산자 (+, -, *, /): /
두 번째 숫자: 4
결과: 2.5
첫 번째 숫자 (종료하려면 q): 5
연산자 (+, -, *, /): /
두 번째 숫자: 0
0으로는 나눌 수 없어요.
첫 번째 숫자 (종료하려면 q): abc
연산자 (+, -, *, /): +
두 번째 숫자: 3
숫자만 입력해 주세요.
첫 번째 숫자 (종료하려면 q): q
계산기를 종료합니다.

자주 하는 실수
- 들여쓰기가 맞지 않을 때:
try와except는 같은 줄 위치에 맞춰야 해요. - q를 입력했는데 안 끝날 때: first == “q” 비교가 float() 변환보다 먼저 와야 해요. 순서가 바뀌면 q를 숫자로 바꾸려다 오류가 나요.
- 소수점 계산이 이상할 때: 0.1 + 0.2가 0.30000000000000004로 나오는 건 컴퓨터가 소수를 저장하는 방식 때문이에요. 오류가 아니라서 걱정하지 않아도 돼요.
- 더 해 볼 만한 것
- 나머지(%), 거듭제곱(**) 연산자 추가하기
- 계산 결과를 리스트에 저장해서 마지막에 기록 보여 주기
- 소수점 둘째 자리까지만 보여 주기
마무리
이 코드를 맥 터미널에서 직접 실행해 봤어요. 처음에는 코드를 붙여넣을 때 마지막 줄의 실행 명령어까지 계산기 입력으로 들어가 버려서, 화면에 “숫자만 입력해 주세요.”가 줄줄이 나왔어요. 당황했지만 생각해 보니 잘못된 입력이 계속 들어와도 프로그램이 멈추지 않고 안내 문구만 보여 준 거라서, try-except가 제대로 일하고 있다는 증거였어요.
그다음 10 / 4를 넣어서 2.5가 나오는 것, 5 / 0을 넣어서 “0으로는 나눌 수 없어요.”가 나오는 것, 숫자 칸에 글자를 넣어도 멈추지 않는 것, 마지막으로 q를 넣어서 깔끔하게 종료되는 것까지 하나씩 확인했어요. 책으로만 읽을 때는 어렵게 느껴졌는데, 직접 일부러 오류를 내 보니 예외 처리가 왜 필요한지 확실히 알겠더라고요.
여러분도 코드를 복사해서 끝내지 말고, 일부러 이상한 값을 넣어 보세요. 그게 가장 빠른 공부예요. 다음 글에서는 이 계산기를 한 단계 발전시켜서 숫자 맞추기 게임을 만들어 볼게요.




댓글 0
첫 댓글을 남겨보세요.