Python 文法の総まとめ問題 — 制御構文・関数・例外を組み合わせて解く
内包表記でのフィルタ + 二乗、safe_divideでのtry/except、戻り値を2倍にする@doubleデコレータの3問。文法章の知識を組み合わせて手を動かす総まとめ演習です。
問題 1: 内包表記でフィルタしながら変換する
リスト内包表記のifフィルタと、`による二乗計算を組み合わせます。条件に合う要素だけを選び、別の値に変換して新しいリストを作る**という、内包表記の典型的な使い方です。
コードを実行してください
問題 2: try / except で安全な除算関数を作る
ゼロ除算が起きても落ちない関数safe_divide(a, b)を作ります。defでの関数定義、try / exceptによる例外キャッチ、returnによる戻り値の使い分けの組み合わせ問題です。
tryの中でreturnされ、エラー時は対応するexceptに飛ぶ。コードを実行してください
問題 3: デコレータで関数の戻り値を後から変える
関数の本体に手を入れずに、戻り値を 2 倍にするデコレータ@doubleを作ります。関数を引数に取り、新しい関数を返す関数というデコレータの構造そのものを実装する課題です。
@doubleはadd = double(add)と同じ意味。コードを実行してください
ここまでお疲れ様でした
Python 文法の章はこれで完了です。条件分岐・ループ・例外処理といった制御構文、def / lambdaでの関数定義、内包表記・高階関数・デコレータ・ジェネレータまで、処理の流れをご自身で組み立てる道具がひととおり揃いました。これで、いくつかの値を加工して結果を返すような関数を、ご自身の手で書ききれるはずです。
次の章「Python オブジェクト指向」では、classでご自身の型を定義する書き方、__init__によるコンストラクタ、継承・ポリモーフィズム・カプセル化、__add__などの特殊メソッド、withコンテキストマネージャーや型ヒントまで、データと処理を 1 つにまとめて管理する設計を学びます。