Menu
Coddy logo textTech

요약 - 안전한 계산기

Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 47번째.

raise, 여러 개의 rescue 절, 그리고 ensure를 결합하여 잘못된 입력에도 중단되지 않는 작은 계산기를 만들어 보세요.

challenge icon

챌린지

중급

다음과 같은 동작을 수행하는 calc(a, op, b) 메서드를 정의하세요:

  • op+, -, *, / 중 하나가 아니면 "unknown operator" 메시지와 함께 ArgumentError를 발생시킵니다.
  • 그렇지 않으면 해당 연산을 수행합니다 (/의 경우 정수 산술을 사용하세요).

그런 다음 입력에서 a, op, b 세 줄을 읽고, begin / rescue / ensure 블록 안에서 calc를 호출하세요:

  • 성공 시, <a> <op> <b> = <result>를 출력합니다.
  • ArgumentError 발생 시, Bad operator를 출력합니다.
  • ZeroDivisionError 발생 시, Cannot divide by zero를 출력합니다.
  • ensure 절에서는 항상 --- end ---를 출력합니다.

ab를 파싱할 때는 동일한 begin 블록 내에서 Integer(...)를 사용하세요. 이렇게 하면 정수가 아닌 입력도 Bad operator로 처리됩니다 (ArgumentError가 두 경우를 모두 포함합니다).

입력이 6 / * / 7인 경우, 출력은 다음과 같습니다:

6 * 7 = 42
--- end ---

입력이 10 / / / 0인 경우:

Cannot divide by zero
--- end ---

직접 해보기

# TODO: calc(a, op, b)를 정의하고, 알 수 없는 op에 대해 ArgumentError를 발생시킵니다

raw_a = gets.chomp
op    = gets.chomp
raw_b = gets.chomp

# TODO: 설명된 대로 begin/rescue/ensure를 사용하세요

로직 및 흐름의 모든 레슨