Coding for KidsCoding for Kids
クリエイティブレベル挑戦教師ガイド
機能に投票
上級Python開発コース
チャプター
>
レベル

例外処理
カスタム例外

目的

カスタム例外を使用して、製品注文に関するメッセージを収集し、鳩便で送信します。

いくつかのメッセージは、農場やその他のステーションにメッセンジャー鳩を使って配信されています。予定より先に進むために、いくつか送信するのは良い考えです。これまで一般的な例外を使用してエラーを捕捉してきましたが、特定のシナリオに対しては独自のカスタム例外を作成する方が有益な場合があります。今回は、独自のカスタム例外を使用して、正しいアイテムを特定し、メッセージと選定された鳩を調達する方法を学びます。

カスタム例外は、クラスを作成することでまとめられ、(Exception) 節を追加することで、例外の実行用にクラスを再利用できます。今回の目的では、2つのクラスを作成します。すなわち、特定の文字列が検証に通らない場合に発動する InvalidLocation と、数値が所定の閾値を超えるかどうかをチェックするための UnsuitableSelection です.

class InvalidLocation(Exception): "Raised when location is invalid" pass class UnsuitableSelection(Exception): "Raised when pidgeon is 2 or younger" pass

クラスが設定されたので、メモを取得して送信できるようにする時が来ました。今後の交換のために必要なコンポーネントを保存および結合するために、prep という名前のリストを作成してください。赤いカーペット上の暗いX印まで歩き、テーブルの前に置かれたX印のあるテーブルの列にて、農場の西部セクター行きの注文が記されたメモを探します。

このセグメントでは、4つの変数定数、red_memoblue_memogreen_memo、および orange_memo が使用されます。収集され、送信されるのは、配達先が "west" セクターとマークされているメモのみです。メモを取得するかどうかを判断するため、try/except および else コードブロックと InvalidLocation カスタム例外を併用します。カスタム例外を使用するには、try ブロックでメモが "west" とラベル付けされているかをチェックし、そうでなければ例外を発生させます。except ブロックはメモが無効であることを確認し、else ブロックはそのメモが実際に "west" セクター行きである場合にそれを収集し、prep リストに追加します。例えば:

try: if red_memo != "west": raise InvalidLocation except InvalidLocation: player.speak("This is not an order that needs to be sent out") else: player.collect(red_memo) prep.append(red_memo)

テーブルの前のカラフルなカーペット上にある各暗いX印まで歩き、それぞれの色に対応する適切な変数定数を使用して例外シーケンスを実行してください。

メモをすべて収集したら、ドアの前にある金色のX印まで歩き、open() 関数を使って鳩小屋にアクセスしてください。中に入ったら、明るいX印まで歩き、背を向けて close() 関数を使用し、ドアを閉めて鳩が逃げないようにします。

紫のカーペット上の暗いX印まで歩き、ペンにて、鳩がメッセージを飛ばすのに十分な年齢か、配送が不可能なひな鳥かを検証します。 このセグメントでは、4つの変数定数、purple_penyellow_penwhite_pen、および pink_pen が、各色のカーペットに対応して使用されます。メモの場合と同じ手法を、先ほど設定した第二のクラスを使用して適用します。

UnsuitableSelection カスタム例外を使った try/except および else コードブロックを使用して、鳩が配送に十分な年齢であるかを判定します。try ブロックでは、ペンを表す変数定数が2歳未満の鳩であるかどうかをチェックし、適切な鳩であるか確認します。鳩が不適切な場合は except ブロックが起動し、適切な場合は else ブロックが実行され、鳩を prep リストに追加してメッセージを配送できるようにします。

try: if purple_pen <= 2: raise UnsuitableSelection except UnsuitableSelection: player.speak("Pigeon unsuitable to deliver") else: prep.append(purple_pen) player.speak("Pigeon Collected")

カラフルなカーペット上の各暗いX印に進み、適切な色に対応する変数定数を使用してこのシーケンスを実行してください。鳩とメッセージをすべて収集したら、一番下にある金色のX印へ歩き、作成した prep リストを引数に place() 関数を使用して、メッセージを配送するために鳩を送り出し、レベルをクリアしてください。

コードブック