むかしむかし、王子の命を救った賢い召使いがいました。 王様は、召使いが望むものなら何でも報酬として与えると約束しました。 王様がチェスを愛していることを知っていた召使いは、小麦の粒がほしいと王様に伝えました。 チェス盤の最初のマスに1粒、次のマスからはマスが進むごとに粒の数が2倍になるように、と。
チェス盤の上にある小麦の粒の数を計算しましょう。
チェス盤には64のマスがあります。 1マス目には1粒、2マス目には2粒、3マス目には4粒、というように、マスが進むごとに2倍になっていきます。
次のものを計算するコードを書きましょう。
ときには例外を発生させる必要があります。そのときは、エラーの原因が何であるかを示す意味のあるエラーメッセージを必ず含めるようにしましょう。そうすることでコードが読みやすくなり、デバッグもぐっと楽になります。エラーの原因がある特定の種類になるとわかっている場合は、組み込みのエラー型から適切なものを選んで発生させてもかまいませんが、その場合も意味のあるメッセージを含めるようにしましょう。
この演習では、入力されたマス目が範囲外のときにraise文を使ってValueErrorを「投げる」必要があります。exceptionをraiseすることと、それにメッセージを添えることの両方ができていなければ、テストは合格しません。
メッセージ付きでValueErrorを発生させるには、exception型の引数としてメッセージを書きます。
# when the square value is not in the acceptable range
raise ValueError("square must be between 1 and 64")