友人のYaʻqūbは、町でいちばん忙しいデリでカウンターに立っています。次から次へと訪れるお腹を空かせたお客さんのために、注文を切り分け、量って、包んでいます。 作業を滞りなく進めるために、お客さんは来店すると番号札を受け取ります。
次の人を呼ぶ順番になると、Yaʻqūbはその番号を声に出して読み上げます。誰にでもはっきりと聞こえるように、いつも省略せず、完全な英語の言葉で読み上げるのです。
数値が1つ与えられます。その数値を、友人が声に出して言うときとまったく同じ英語の言葉で表してください。 Yaʻqūbは、0から999,999,999,999までの数値を使うことを想定しています。
例:
ときに、例外を送出する必要があります。そのときは、エラーの原因が何であるかを示す意味のあるエラーメッセージを必ず含めるようにしましょう。こうすると、コードが読みやすくなり、デバッグもぐっと楽になります。エラーの原因が特定の種類になるとわかっている場合は、組み込みのエラータイプのいずれかを送出することもできますが、その場合も意味のあるメッセージを含めるようにしましょう。
この演習では、say()に入力する数値が範囲外の場合に、raise文を使ってValueErrorを「スロー」することが求められています。テストが通るのは、exceptionをraiseすることと、それにメッセージを添えることの両方を満たしている場合だけです。
メッセージ付きでValueErrorを送出するには、exception型の引数としてメッセージを書きます。
# if the number is negative
raise ValueError("input out of range")
# if the number is larger than 999,999,999,999
raise ValueError("input out of range")