문장제

문장제

쉬움

지침

간단한 수학 문장제 문제를 분석하고 계산해서 답을 정수로 반환해요.

0단계: 숫자

연산이 없는 문제는 주어진 숫자가 그대로 답이 돼요.

What is 5?

5로 계산돼요.

1단계: 덧셈

두 숫자를 더해요.

What is 5 plus 13?

18로 계산돼요.

큰 숫자와 음수도 처리해요.

2단계: 뺄셈, 곱셈, 나눗셈

이제 나머지 세 가지 연산도 해봐요.

What is 7 minus 5?

2

What is 6 multiplied by 4?

24

What is 25 divided by 5?

5

3단계: 여러 연산

연산이 여러 개인 문제도 순서대로 처리해요.

이 문제들은 말로 표현된 문장제 문제이므로, 일반적인 연산 순서는 무시하고 식을 왼쪽에서 오른쪽으로 계산해요.

What is 5 plus 13 plus 6?

24

What is 3 plus 2 multiplied by 3?

15 (즉, 9가 아니에요)

4단계: 오류

파서는 다음 입력을 거부해야 해요.

  • 지원하지 않는 연산 ("What is 52 cubed?")
  • 수학과 관련 없는 질문 ("Who is the President of the United States")
  • 문법이 잘못된 문장제 문제 ("What is 1 plus plus 2?")

예외 메시지

때로는 예외를 발생시켜야 하는 경우가 있어요. 이때는 오류의 원인이 무엇인지 알 수 있도록 의미 있는 오류 메시지를 항상 함께 넣어야 해요. 그래야 코드가 더 읽기 쉬워지고 디버깅에도 큰 도움이 돼요. 오류 원인이 특정 유형이라는 것을 알고 있는 상황이라면 내장 오류 유형 중 하나를 골라 발생시켜도 되지만, 그래도 의미 있는 메시지는 꼭 함께 넣어야 해요.

이 연습 문제에서는 answer()에 전달된 질문이 잘못되었거나 유효하지 않거나, 알 수 없는 연산을 포함하고 있을 때 ValueError를 "던지기" 위해 raise문을 사용해야 해요. 테스트는 exception을 raise하면서 메시지도 함께 넣을 때만 통과해요. 참고하세요: 같은 _오류 유형_을 발생시키더라도 상황마다 필요한 메시지가 달라요. 테스트를 꼼꼼히 확인해요.

메시지와 함께 ValueError를 발생시키려면, 메시지를 exception 타입의 인자로 작성해요:

# if the question contains an unknown operation.
raise ValueError("unknown operation")

# if the question is malformed or invalid.
raise ValueError("syntax error")

특정 코드 블록 안에서 발생한 오류를 _처리_하려면 try-except를 사용할 수 있어요. try-except 블록은 오류를 일으킬 수 있는 코드를 "감싸서", 모든 예외를 하나의 오류로, 여러 오류로, 또는 문제를 해결할 다른 코드 조각으로 연결해 줘요:

while len(equation) > 1:
        try:
           # The questionable/error-prone code goes here,in an indented block
           # It can contain statements, loops, if-else blocks, or other executable code.
           x_value, operation, y_value, *rest = equation
           ...
           ...

        except:
            # Code for what to do when an error gets thrown in the code above.
            # This could be one error, or more complicated logging, error checking and messaging.
            raise ValueError("syntax error")
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Python Exercism

문장제 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Python 트랙을 개념 17개연습 문제 146개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.