Python3の基本構文 第三回

条件分岐

これまで、変数やコンテナ等の使い方やコードを紹介してきました。コードの1行1行をPythonが実行してきました。この1行が実行単位ですが、これを文と言います。
(別名statement(ステートメント)) これまでは、1行づつ上から下に実行していましたが、ある条件で処理が分かれるような書き方が、出来ます。Statement(文)の実行順をコントロールするプログラムの構成を制御構造と言います。代表的なものとして、順次・分岐・切り替えしがあります。
この3つの制御構造を組み合わせれば、文の実行の流れを柔軟にコントロール可能となります。

 

上記のような1行1行が文(Statement)となります。

 

条件分岐の基本構造

if文

if文は、プログラムにおいて条件分岐を実現するための基本的な制御構造の1つです。特定の条件を評価し、その条件が真(True)の場合にのみ指定した処理を実行します。
これにより、プログラムの流れを柔軟に制御することが可能になります。
if: 条件分岐のキーワード。
条件式: 真偽値(TrueまたはFalse)を返す式。例: 比較演算子(==, !=, >, <, >=, <=)や論理演算子(and, or, not)を使用。
インデントされた部分は条件が真の場合にのみ実行されます。







条件式の比較演算子

Pythonの条件式で使用される比較演算子は、特定の条件を評価する際に不可欠な要素です。これらの演算子を利用して値同士を比較し、結果として真(True)または偽(False)を返します。
左辺は右辺より小さいとか大きいとかの比較になります。

1. ==(等しい
==は、2つの値が等しいかどうかを比較します。等しい場合はTrueを返し、異なる場合はFalseを返します。
x = 5
y = 5
print(x == y) # 出力: True

2. !=(等しくない
!=は、2つの値が等しくない場合にTrueを返します。逆に、値が等しい場合はFalseです。
x = 5
y = 3
print(x != y) # 出力: True

3. <(より小さい)
<は、左側の値が右側の値よりも小さい場合にTrueを返します。
x = 3
y = 5
print(x < y) # 出力: True

4. >(より大きい)
>は、左側の値が右側の値よりも大きい場合にTrueを返します。
x = 5
y = 3
print(x > y) # 出力: True

5. <=(以下
<=は、左側の値が右側の値と等しいか、またはそれよりも小さい場合にTrueを返します。
x = 5
y = 5
print(x <= y) # 出力: True

6. >=(以上
>=は、左側の値が右側の値と等しいか、またはそれよりも大きい場合にTrueを返します。
x = 5
y = 3
print(x >= y) # 出力: True

in演算子

Pythonのin演算子は、特定の値がシーケンスやコレクション(例: リスト、タプル、文字列、辞書)に含まれているかを判定するために使われる演算子です。評価の結果としてTrueまたはFalseを返します。

値 in データ構造

●値: 検索したい対象の値。
●データ構造: 検索対象のデータ構造(リスト、タプル、文字列、辞書など)。

リストやタプルに値が含まれているか確認
文字列に特定の部分文字列が含まれているか確認
辞書に特定のキーが存在するか確認


not in 演算子

not inは、inの否定形で、特定の値がデータ構造に含まれていない場合にTrueを返します。




論理演算子

これまで説明した条件式は、すべて1つだけの条件で判断してきました。複数の条件を組み合わせた条件式を記述することもできます。

演算子  意味 
 and  且つ
 or  または
 not  ではければ(否定)

例)



コードの流れ
andの例では、複数の条件を確認して成人判定を行います。
orの例で、資格の所有状態をチェックしています。
notの例で、ログイン状態の反転ロジックを使います。
複数の論理演算子の組み合わせで、年齢と地域の条件を確認します。
ループ内での条件分岐で、リスト内の値を条件に従って判定しています。
応用例として、アクセス許可を複雑な条件で管理しています。

if-else構文

基本となるのが、if-else構文です。条件式が成立した時と成立しなかった時で処理を分岐します。



フローチャート

 

if文のみの構文

条件式が成立しなかった時、何もしないという事もあり得ます。この様な場合はelseブロックを省略出来ます。



または
明示的に pass を記述し何もないことを定義する。どっちでも良いが、コードの可読性をUPさせるなら pass の記述が個人的には良いと思いました。コードは、コーディングした本人も後から確認すると、あれ?なんてなりますので、誰が見ても分かりやすいように記述しよう!

if-elif構文



if文のネストも可能だが、階層が深くなってくると可読性が悪くなってくるので、工夫した方が良いです。2つくらいまでなら許容範囲です!

繰り返し処理の基本構造

while文

while文は、Pythonをはじめとする多くのプログラミング言語において提供される制御構造の一つで、特定の条件が満たされている間、繰り返し処理を実行するために使用されます。プログラムの中でループ処理が必要な場面、例えば特定の条件が継続する限り何らかの操作を繰り返したい場合に非常に便利です。while文を利用することで、事前に繰り返し回数を正確に指定する必要がなく、条件に基づいて柔軟に繰り返しを行うことができます。



無限ループに注意しましょう
while文で注意が必要なのは、条件式が常にTrueのままである場合です。条件を適切に制御しないと、ループが終了せず無限に実行されます。このような状態を無限ループと呼び、プログラムが停止しないため問題となることがあります。無限ループを避けるには、ループ内で条件を適切に制御する処理を含めることが重要です。

主な特徴と用途

柔軟な繰り返し  while文は、繰り返し回数が事前に確定していない場合や、プログラムの実行中に条件が変動する場合に適しています。例えば、ユーザーからの入力や特定のイベントが発生するまで処理を継続したい場合に役立ちます。 
 条件判定の重要性  条件式がFalseになった時点でループが終了するため、どのタイミングで条件が変化するかを計画することが重要です。条件が誤って設定されると、意図しない挙動や無限ループにつながる可能性があります。
 反復処理の制御  ループ中にbreakやcontinueといった制御文を使用することで、ループの終了や次の繰り返しへのスキップなど、柔軟な反復処理が可能です。






for文

for文は、繰り返し処理(ループ処理)を行うための非常に強力で柔軟な制御構造です。指定したシーケンス(例: リスト、タプル、文字列、辞書、セット、またはrange()関数で生成される数列)内の要素に対して、順番に操作を実行します。for文を使うことで、コードを効率化し、明確で簡潔な記述が可能になります。

 for文は、シーケンスが空になる(要素がなくなる)まで、指定されたコードを反復して実行します。

 

1 イテラブルに対応 Pythonのfor文は、イテラブル(繰り返し可能なオブジェクト)を対象としています。
  イテラブルは、__iter__()または__getitem__()メソッドを持つオブジェクトで、これにはリスト、タプル、文字列、辞書、セットなどが含まれます。

2 順番に値を処理 リストやタプルの場合、for文は最初の要素から順番に取り出し、指定された処理を行います。文字列であれば、各文字を順番に処理します。

3 自動終了 繰り返し処理は、対象のシーケンスが終了(すべての要素を処理)すると自動的に停止します。

4 ネスト可能 for文は他のfor文やwhile文の中にネストして記述でき、複雑な繰り返し処理も実現可能です。

5 breakとcontinueによる制御 breakを使うとループを途中で終了し、continueを使うと現在の反復をスキップして次の反復に進みます。これにより、柔軟なループ制御が可能です。

for文の利点

 

例)



コードの説明

 

while文とfor文の使い分け

while文とfor文はどちらも繰り返し処理(ループ処理)を実現するための構文ですが、それぞれの特性が異なるため、状況に応じて使い分けることが重要です。

 


while文の例: 条件が満たされるまで繰り返し




for文の例: リスト内の要素を反復処理



break文とcontinue文でループを中断する

break文は、書かれた繰り返しのブロックを即座に中断する。while文やfor文による繰り返し処理をすぐに中断したい場合有効と思います。
contine文は、現在のループの周回を中断して同じ繰り返しの次の周回に進む。この周回だけを中断して、繰り返し自体は続けたい場合に使用します。

break文の例




continue文の例



コードの説明

1 偶数をスキップする例:
  range()を使って1から10までの数値を繰り返し処理。
  if number % 2 == 0で偶数の場合にcontinueを使い、その回の処理をスキップ。
  奇数のみを出力。

2 不正な入力をスキップする例:
  リスト内の文字列をループ処理し、isdigit()を使って数値かどうかをチェック。
  数値でない場合にcontinueを使って処理をスキップし、有効な値だけを出力。

3 辞書の特定条件をスキップする例:
  辞書内のデータを反復処理し、ageがNone(未登録)の場合にスキップ。
  有効なデータのみを出力。