Python/条件分岐と繰り返し
Python の制御構造には、逐次・分岐・繰返しの3つがあり。このうち逐次はプログラムが左上から左から右・上から下に進む当たり前の状態ですので、これ以上の説明は必要ないと思います。
条件分岐

Pythonでは条件分岐をするために if 文あるいは match 文を使います。
条件分岐

Pythonでは条件分岐をするために if 文を使います。基本的な形は以下のようになります:
条件分岐

例えば、ある変数 x の値に基づいて条件分岐する場合を考えてみましょう:
条件分岐

この場合、x の値が10なので、最初の条件と最後の条件のどちらも満たされますが、最初の条件が先に評価されます。そのため、"xは10です" と出力されます。
条件分岐

条件分岐を使うことで、プログラムが特定の条件下で異なる動作をするように制御することができます。
条件分岐

Python 3.10以降では、match文が導入されました。match文は、特定の値に基づいてパターンをマッチングし、対応するブロックを実行するのに使用されます。match文は、複数の値や条件を一度に比較し、コードをより読みやすくし、処理をシンプルにするのに役立ちます。
条件分岐

以下は、match文の基本的な使い方です:
条件分岐

この例では、x の値に応じて異なる処理を行います。match文では、caseキーワードを使用して値やパターンを指定し、そのパターンがマッチした場合に対応するブロックが実行されます。また、case _:のように_を使用することで、どのケースにもマッチしない残りのケースを処理することができます。
条件分岐

さらに、match文では複数の条件やパターンをまとめて処理することもできます。例えば、タプルやリスト、または|演算子を使用して複数の条件を指定できます:
条件分岐

この例では、(0, 0)ならば原点、(x, y)でxとyが同じなら同じ値、(x, _)でxが正の値なら正の値、それ以外のケースを処理します。
条件分岐

match文はパターンマッチングを使用して柔軟な条件分岐を行うのに役立ちます。これにより、コードの読みやすさと保守性を向上させることができます。
条件分岐

条件式はプログラミングで特定の条件が成立するかどうかを判定するために使われます。Pythonでは、if文を使って条件式を評価し、条件が真である場合に特定のコードブロックを実行します。
条件分岐

基本的な構文は以下のようになります:
条件分岐

elseは省略可能で、条件が偽の場合に何も実行しないようにすることができます。
条件分岐

Pythonでは比較演算子や論理演算子を使って条件式を組み立てることができます。主な比較演算子は以下の通りです:
条件分岐

例えば:
条件分岐

さらに、複数の条件を組み合わせるために論理演算子を使用できます:
条件分岐

例えば:
条件分岐

このようにして、条件式を使うことでプログラム内で特定の条件が成立するかどうかを判断し、それに応じた処理を行うことができます。
条件分岐

in演算子はPythonで非常に便利な演算子の1つです。in演算子は特定の要素がコレクション(リスト、タプル、文字列など)に含まれているかどうかをチェックするのに使います。
条件分岐

例えば、リスト内に特定の要素が含まれているかを確認する場合に使えます:
条件分岐

同様に、文字列内で特定の部分文字列が存在するかを確認することもできます:
条件分岐

in演算子は、リストや文字列の他にも、辞書や集合などのコレクションでの要素の存在をチェックするのに役立ちます。条件式にin演算子を使うことで、特定の要素がコレクションに含まれているかどうかを簡単に判断できます。
条件分岐

Pythonの条件式では、整数、文字列、リストなどのさまざまなデータ型を使用することができます。条件式では、その値が真か偽かを判定します。
条件分岐

整数を条件式として使用する場合、0は偽として扱われ、0以外の整数は真として扱われます。例えば:
条件分岐

ここでは、xが0以外の値(真)を持っているため、"xは真です"と出力されます。
条件分岐

文字列やリストなどのシーケンスも条件式として使用できます。空の文字列や空のリストは偽として扱われます。例えば:
条件分岐

上記の場合、my_stringとmy_listの両方が空なので、"空です"と出力されます。
条件分岐

このように、Pythonの条件式では値が真か偽かを判定し、それに基づいてコードを実行することができます。整数、文字列、リストなど、さまざまなデータ型を条件式として使用することで、柔軟な条件分岐を行うことができます。
if 式

Pythonのif文は、条件に基づいてコードの実行を制御するためのものでしたが、Python3.8からはif式(または三項演算子)が導入されました。if式は、1行で条件に応じて値を返すことができます。
if 式

if式の基本的な構文は以下の通りです:
if 式

これは、条件が真の場合にvalue_if_trueを返し、偽の場合にvalue_if_falseを返します。
if 式

例えば、次のように使えます:
if 式

この場合、xが偶数なら"Even"が、奇数なら"Odd"が出力されます。
if 式

このように、if式を使うと簡潔に条件に応じて値を設定したり、返したりすることができます。特に、1行で簡潔に条件式を表現したい場合に便利です。
if 式

内包表記とif式は、Pythonでコードを短く、効率的に書くための強力な機能です。
if 式

内包表記は、リスト、集合、辞書などのデータ構造を構築するための簡潔な方法です。if式を内包表記に組み込むことで、特定の条件を満たす要素のみを含むリストや集合を生成できます。
if 式

リスト内包表記でifを使う例を見てみましょう:
if 式

このコードでは、numbersリストから偶数のみを取り出してeven_numbersリストを生成しています。リスト内包表記の中でifを使用することで、条件に合致する要素だけを含むリストを作成できます。
if 式

同様に、辞書内包表記や集合内包表記でもif式を使用できます。例えば:
if 式

これらの例は、内包表記を使って条件に基づいてリスト、辞書、集合を生成する方法を示しています。if式を内包表記に組み込むことで、コンパクトで読みやすいコードを書くことができます。
match文

Python 3.10 から、パターンマッチングを行う match 文がサポートされました。
match文

正規表現の match メソッドとは別です。
match文

match文は、2021年に導入された新しい機能で、3.9以前のバージョンのpythonではmatch文は使えません。
match文

Pythonの match 文で使用されるパターンは、以下のようなものがあります。
match文

以下で、それぞれについて詳しく解説します。
match文

value パターンは、値が等しいかどうかを比較するためのパターンです。以下は、例です。
match文

この例では、color という変数に格納された値に応じて、条件分岐を行っています。case "red": は、color が "red" と等しい場合にマッチします。
match文

ワイルドカードパターンは、どの値にもマッチするパターンです。ワイルドカードパターンは、_ という記号で表現します。
match文

ガードパターンは、条件式が True である場合にマッチするパターンです。ガードパターンは、if キーワードを使って表現します。
match文

type パターンは、型が等しいかどうかを比較するためのパターンです。以下は、例です。
match文

この例では、value という変数に格納された値の型に応じて、条件分岐を行っています。case int: は、value の型が整数型の場合にマッチします。
match文

as パターンは、値を別名で参照するためのパターンです。以下は、例です。
match文

この例では、value という変数に格納された値の型に応じて、条件分岐を行っています。case int as n: は、value の型が整数型の場合にマッチし、value の値を n という名前で参照することができます。
match文

orパターンは、二つのパターンのいずれかにマッチする場合に使用されます。例えば、次のように使用します。
match文

listパターンは、リストに対してマッチする場合に使用されます。次のように、リストの要素を一つ一つマッチングします。
match文

tupleパターンは、タプルに対してマッチする場合に使用されます。リストの場合と同様に、タプルの要素を一つ一つマッチングします。
match文

dictパターンは、辞書に対してマッチする場合に使用されます。次のように、辞書のキーと値を一つ一つマッチングします。
match文

classパターンは、特定のクラスのインスタンスに対してマッチする場合に使用されます。次のように、クラス名を指定して、クラスのインスタンスにマッチングします。
match文

Pythonのシーケンスパターンは、リスト、タプル、文字列、バイト列のようなシーケンス型のデータをマッチングするために使用されます。シーケンスパターンは、複数の要素を一度にマッチングするために使用され、組み込みの結合演算子を使用して複数のパターンを結合することができます。
match文

以下は、シーケンスパターンを使用してリストをマッチングする例です。
match文

上記の例では、my_listが4つの異なるパターンにマッチするように定義されています。最初のパターン [1, 2, 3]は、my_listが要素が1, 2, 3のリストである場合にマッチします。2番目のパターン [1, _, _]は、my_listが最初の要素が1で、次の2つの要素が何であってもマッチします。3番目のパターン [1, *rest]は、my_listが最初の要素が1である場合にマッチし、*restはリストの残りの部分をキャプチャします。最後のパターン _は、どのリストにもマッチするため、最後のパターンは常に True を返します。
match文

シーケンスパターンは、パターンの部分を任意の式で置き換えることができるため、マッチングされた要素にアクセスして処理を実行することができます。例えば、以下の例ではリストの最初の2つの要素にアクセスしていることがわかります。
match文

この例では、xとyは最初の2つの要素を表し、restは残りのリストを表します。 rest はキーワードではありませんが、レストパターンを引き受ける変数の名前としてよく使われます。
match文

match文の最初の例は、辞書を使って下のように書き換えることができます。
match文

Python 3.4からは、enumモジュールが標準ライブラリとして提供されています。
match文

以下は、enumパッケージを使用した簡単な例です。
match文

このように、Enumを継承したクラスを作成し、クラス属性として定数を定義することで、独自の列挙型を定義できます。 上記の例では、Colorという列挙型を定義し、RED、GREEN、BLUEという3つの定数を定義しています。
match文

列挙型を使用すると、例えばColor.REDというように、定数に直接アクセスすることができます。
match文

また、列挙型はforループを使って列挙することができます。
match文

match文と組み合わせると、列挙型の値に基づいた処理を簡潔に記述できます。
match文

Python 3.10以降では、enumパッケージにauto()という新しい機能が導入されました。これにより、列挙型に自動的に連番の値を割り当てることができます。
match文

上記のコードでは、auto()を使用して列挙型に自動的に連番の値を割り当てています。結果として、Color.REDは1、Color.GREENは2、Color.BLUEは3の値を持ちます。
繰返し

Pythonには、さまざまな繰り返しの方法があります。主なものは for ループと while ループです。
繰返し

for ループは、リスト、タプル、辞書、集合などのイテラブル(要素を一つずつ取り出せるオブジェクト)を繰り返し処理するのに使います。
繰返し

リストの例:
繰返し

fruitsリスト内の各要素を順番に取り出して、その要素をfruitという変数に格納してループ内で使用しています。
繰返し

辞書の例:
繰返し

items()メソッドを使って辞書のキーと値のペアを取得し、keyとvalueにそれぞれ格納しています。
繰返し

while ループは指定された条件が真の間、繰り返し処理を実行します。
繰返し

この例では、countが5未満の場合にループが実行され、countの値が表示されます。count += 1によってcountが1ずつ増加します。
繰返し

:=演算子はPython 3.8で導入された「セイウチ演算子(Walrus operator)」として知られています。これは式内で変数に値を代入するためのもので、通常の代入文とif文を組み合わせたような構文を、より簡潔に記述できるようにします。
繰返し

例えば、whileループでの使用方法を見てみましょう:
繰返し

この例では、input()関数を使ってユーザーから数値を入力し、:=演算子を使用して同時にinput_valueに代入しています。そして、入力された値が0でない限り、ループは継続され、totalに入力値を加算し続けます。入力された数値が0であればループは終了し、最終的な合計値が表示されます。
繰返し

この演算子は、ループ内で変数を初めて定義する際や、式内で一時的な変数を使う場合などに特に便利です。ただし、適切に使うことでコードの読みやすさを損なわないように注意が必要です。
繰返し

breakやcontinueなどの制御構造も使えます。breakはループを抜け出し、continueはループの現在のイテレーションをスキップして次のイテレーションに進みます。
繰返し

この例では、continueはiが3のときに処理をスキップし、breakはiが8のときにループを抜けます。
繰返し

これらの方法を使って、Pythonで繰り返し処理を行う機能を活用することができます。
繰返し

while文あるいはfor文がbreak文で中断しなかった場合、forにつづくelse節が実行されます。else節は、大概のプログラミング言語ではif文と組合わせて使いますが、Pythonではこれに加え繰返し(while文あるいはfor文)と組合わせることができます。
繰返し

Pythonでは、ループはスコープを作りません。