この章では、Pythonの基本的な制御構文(条件分岐、ループ)と関数の定義方法について学びます。他の言語にも同様の機能はありますが、特にfor
ループの振る舞いや、柔軟な引数の渡し方はPythonの大きな特徴です。これらの「Pythonらしい」書き方をマスターすることで、より簡潔で読みやすいコードを書けるようになります。
Pythonの条件分岐はif
、elif
(else ifの略)、else
を使って記述します。C言語やJavaのような波括弧{}
は使わず、**コロン:
とインデント(通常は半角スペース4つ)**でコードブロックを表現するのが最大の特徴です。
条件式にand
やor
、not
といった論理演算子も使用できます。
Pythonのfor
ループは、他の言語のfor (int i = 0; i < 5; i++)
といったカウンタ変数を使うスタイルとは少し異なります。リストやタプル、文字列などのイテラブル(反復可能)オブジェクトから要素を1つずつ取り出して処理を実行します。これは、Javaの拡張for文やC#のforeach
に似ています。
決まった回数のループを実行したい場合は、range()
関数が便利です。range(n)
は0からn-1までの連続した数値を生成します。
ループ処理の中で、要素のインデックス(番号)と値の両方を使いたい場合があります。そのような時はenumerate()
関数を使うと、コードが非常にスッキリします。これは非常にPythonらしい書き方の一つです。
while
ループは、指定された条件がTrue
である間、処理を繰り返します。ループを途中で抜けたい場合はbreak
を、現在の回の処理をスキップして次の回に進みたい場合はcontinue
を使用します。
関数はdef
キーワードを使って定義します。ここでもコードブロックはコロン:
とインデントで示します。値はreturn
キーワードで返します。
引数と返り値に**型アノテーション(型ヒント)**を付けることもできます。これはコードの可読性を高め、静的解析ツールによるバグの発見を助けますが、実行時の動作に直接影響を与えるものではありません。
型アノテーションは 引数名: 型
のように記述し、返り値の型は -> 型:
のように記述します。
Pythonの関数は、非常に柔軟な引数の渡し方ができます。型アノテーションと組み合わせることで、どのような型の引数を期待しているかがより明確になります。
引数名=値
の形式で渡します。順序を問わないため、可読性が向上します。注意点: デフォルト引数を持つ引数は、持たない引数の後に定義する必要があります。
関数の引数の数が可変である場合に対応するための仕組みです。型アノテーションを使う場合は、typing
モジュールからAny
などをインポートすると便利です。
任意の数の位置引数をタプルとして受け取ります。型アノテーションでは *args: 型
のように表現します。
任意の数のキーワード引数を辞書として受け取ります。型アノテーションでは **kwargs: 型
のように表現します。どのような型の値も受け付ける場合は Any
を使います。
lambda
キーワードを使うと、名前のない小さな無名関数を定義できます。
構文: lambda 引数: 式
この章では、Pythonの制御構文と関数の基本を学びました。他の言語の経験がある方にとって、特に以下の点はPythonの特徴として重要です。
{}
の代わりにインデントでコードブロックを定義するため、自然と誰が書いても読みやすいコードスタイルになります。for
ループはイテラブルを巡る: for item in collection:
の形が基本です。インデックスが必要な場合は、for i, item in enumerate(collection):
のようにenumerate()
を使うのがPythonらしい書き方です。*args
, **kwargs
) を使いこなすことで、非常に柔軟で再利用性の高い関数を作成できます。lambda
はコードを簡潔に保つのに役立ちます。これらの機能を理解し使いこなすことが、より効率的で「Pythonic(パイソニック)」なコードを書くための第一歩となります。
数値のリストが与えられたとき、そのリストに含まれる偶数とその**インデックス(位置番号)**だけを出力するプログラムを書いてください。
ヒント:
for
ループとenumerate()
を組み合わせます。%
(剰余)演算子を使って、2で割った余りが0になるかで判定できます (number % 2 == 0
)。python practice4_1.py
ユーザーのプロフィール情報を出力する関数 create_profile
を作成してください。引数と返り値には型アノテーションを付けてください。
要件:
name
(名前)はstr
型で、必須の引数とします。age
(年齢)と city
(都市)はstr
型で、キーワード引数として任意に受け取れるようにします。もし指定されなかった場合は、年齢は「秘密」、都市は「不明」と表示されるようにしてください。ヒント:
age
とcity
にはデフォルト引数値を設定します。-> None
です。python practice4_2.py