간단한 계산기 만들기

in #krsuccess14 hours ago

숫자만 넣으면 바로 계산! “간단한 계산기” 만들기

이전 글에서 조건에 따른 메시지 출력까지 해봤잖아.
이번엔 그 흐름 그대로, 숫자를 입력받아서 사칙연산 결과를 콘솔에 딱 보여주는 계산기를 만들어볼 거야. 완전 기본인데, 이게 은근히 “프로그램이 살아있다!” 느낌이 나더라. 나름 재밌음.

stevepb


우리가 만들 계산기 모양

예를 들면 이런 식으로 돌아가면 돼.

  • 첫 번째 숫자 입력
  • 연산자 입력 (+, -, *, /)
  • 두 번째 숫자 입력
  • 결과 출력

그리고 사용자가 뭔가 이상한 걸 넣으면,

  • “연산자를 다시 확인해줘요!”
  • “숫자 입력이 필요해요!”
    같은 식으로 조건문으로 친절하게 안내할 거야. (이전 글이랑 연결되는 부분!)

Simon


전체 코드(일단 한 번에 보기)

여기서부터는 파이썬 기준으로 작성할게. (바이브 코딩이라면 너도 이미 이 흐름 익혔을 거라고 믿어!)

def get_number(prompt):
    while True:
        value = input(prompt)
        try:
            return float(value)
        except ValueError:
            print("음... 숫자를 입력해야 해요. 예: 3, 3.14, -2")

def get_operator(prompt):
    allowed = ['+', '-', '*', '/']
    while True:
        op = input(prompt).strip()
        if op in allowed:
            return op
        print("어? 연산자가 잘못됐어요! +, -, *, / 중에서 골라주세요.")

def calculate(a, op, b):
    if op == '+':
        return a + b
    elif op == '-':
        return a - b
    elif op == '*':
        return a * b
    elif op == '/':
        if b == 0:
            print("아! 0으로 나누기는 불가능해요.")
            return None
        return a / b

# 메인 흐름
print("간단한 계산기 시작!")
a = get_number("첫 번째 숫자를 입력하세요: ")
op = get_operator("연산자를 입력하세요 (+, -, *, /): ")
b = get_number("두 번째 숫자를 입력하세요: ")

result = calculate(a, op, b)
if result is not None:
    print(f"결과: {a} {op} {b} = {result}")

Sunriseforever


코드가 하는 일, 한 줄씩 “사람 말”로 해석하기

1) 숫자 입력은 “계속 물어보기”

get_number()에서 핵심은 이거야:

  • 사용자가 입력한 값을 float()로 바꿔보려고 함
  • 만약 숫자가 아니면 ValueError 발생
  • 그럼 while True로 다시 입력 받음

솔직히 말하면, 처음에 나는 이거 안 넣고 “한 번만 입력받으면 끝!”으로 했다가…
누가 "abc" 넣는 순간 프로그램이 그냥 죽어서 완전 당황했거든.
그래서 “아, 사용자가 실수해도 안 죽는 게 진짜 좋은 프로그램이지” 싶더라. 음... 교훈임.

2) 연산자 입력은 “허용 목록”으로 걸러주기

get_operator()에서 allowed = ['+', '-', '*', '/'] 이 리스트로 막아버려.

  • + - * / 아니면 다시 입력하게 함
  • 이건 이전 글에서 배운 조건문 흐름 제어랑 똑같은 느낌이야.

Pexels

3) 실제 계산은 calculate()에서 담당

calculate(a, op, b):

  • op에 따라 if/elif로 계산
  • 나눗셈(/)일 때는 b == 0 체크
    → 0으로 나누면 오류가 터지니까, 먼저 막아주기

이 부분이 사실 계산기에서 제일 “실전 느낌” 나는 부분이야.
(여기서 안 막으면, 프로그램이 “고장 모드”로 바뀌거든. 너무 싫음.)


실행 예시(대충 이런 느낌)

예를 들어 입력이 이렇게 들어오면:

  • 첫 번째 숫자: 10
  • 연산자: *
  • 두 번째 숫자: 3

출력:

  • 결과: 10.0 * 3.0 = 30.0

그리고 사용자가 연산자를 x 같은 걸 넣으면?

  • “어? 연산자가 잘못됐어요! +, -, *, / 중에서 골라주세요.”

숫자 대신 one 같은 걸 넣으면?

  • “음... 숫자를 입력해야 해요…”

이게 바로 조건문 출력이랑 자연스럽게 이어지는 흐름이야. 나름 정석!


근데 여기서 “한 가지 더” 생각해보기

지금 계산기는 한 번 계산하고 끝나지?
근데 현실에선 보통 계속 계산하고 싶잖아?

그래서 다음 글(5-4)에서는 아예 이런 흐름으로 확장해볼 거야:

  • 텍스트로 메뉴 출력
  • “1) 더하기 2) 빼기 3) 곱하기 4) 나누기 0) 종료” 같은 선택
  • 선택에 따라 계산 실행

즉, 계산기의 입력/출력 경험이 훨씬 편해지는 방향으로 가는 거지.


다음: 텍스트 기반 메뉴 만들기(5-4)

이제 계산 로직은 준비됐어.
다음 글에서는 이걸 “사용자 친화적으로” 바꿔서,

Michael_Kastelic

  • 입력을 깔끔하게 받고
  • 실행 흐름을 메뉴로 제어하는 방식

을 만들어볼게.

자, 다음 글에서 같이 “진짜 계산기 느낌” 내보자! 😄