Wordy

Wordy

初級

説明

簡単な数学の文章題を解析して評価し、答えを整数として返します。

イテレーション0:数値

演算を含まない問題は、与えられた数値がそのまま答えになります。

What is 5?

5と評価されます。

イテレーション1:足し算

2つの数値を足し合わせます。

What is 5 plus 13?

18と評価されます。

大きな数値や負の数値も扱えるようにしましょう。

イテレーション2:引き算、掛け算、割り算

次に、残りの3つの演算を実装しましょう。

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?")

例外メッセージ

例外を発生させる必要があることがあります。そのときは、エラーの原因が何であるかを示す意味のあるエラーメッセージを必ず含めるようにしましょう。これにより、コードが読みやすくなり、デバッグもずっと楽になります。エラーの原因がある特定の種類だとわかっている場合は、組み込みのエラー型の一つを発生させることもできますが、その場合も意味のあるメッセージを含めるようにしましょう。

この演習では、raise文を使って、answer()に渡された問題が不正または無効である場合、あるいは未知の演算を含む場合に、ValueErrorを「投げる」必要があります。テストに合格するには、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ブロックは、エラーを引き起こす可能性のあるコードを「包み込み」、すべての例外を、1つのエラーや複数のエラー、あるいは問題に対処するための別のコードに対応させます。

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

Wordyを始める準備はできましたか?

Exercismに登録すれば、17個のコンセプト146個の演習、そして本物の人間によるメンタリングとともに、Pythonを学んでマスターできます。すべて無料です。