Pythonでプログラミングを始めたばかりの方へ、条件分岐の基本であるif
文についてわかりやすく解説します。
if
文は、プログラム内で条件に基づいた決定を行う際に使用されます。
この記事を通じて、if
文の基本的な使い方と、いくつかの実例を学びましょう。
また、複合条件と3項演算子についても解説していますのでぜひ最後までお読みください。
Pythonのif文の基本
Python
におけるif
文は、指定された条件がTrue
(真)であるかどうかを評価します。
条件がTrue
であれば、if
文に続くブロックのコードが実行されます。
基本的な構文は以下の通りです:
|
|
ここで、条件式は真偽値(True
またはFalse
)を返す式でなければなりません。
基本的なif文
|
|
この例では、age
が18
以上の場合にのみ、“あなたは成人です。“と出力されます。
elseを使った条件分岐
if
文だけでも条件に基づく処理は可能ですが、条件がFalse
の場合に別の処理を行いたい場合はelse
を使用します。
|
|
if-else文の使用
|
|
この例では、age
が18
未満の場合に"あなたは未成年です。“と出力されます。
elifを使った複数の条件
2つ以上の条件を評価したい場合は、elif
(else ifの略)を使用します。
|
|
if-elif-else文の使用
|
|
この例では、score
が80
以上、60
以上、60
未満に応じて異なるメッセージを出力します。
or演算子
or
演算子は、複数の条件のうち少なくとも1つがTrue
であれば、全体の条件式をTrue
と評価します。
すなわち、条件A or
条件BがTrue
であれば、条件式全体がTrue
になります。
下記コードはユーザーが成人または会員である場合に割引を適用する例です。
|
|
この例では、年齢が18
歳以上、または会員であれば割引が適用されます。
or
演算子により、いずれかの条件が満たされていればTrue
となります。
and演算子
and
演算子は、複数の条件がすべてTrue
である場合に、全体の条件式をTrue
と評価します。
条件A and
条件Bが両方ともTrue
であれば、条件式全体がTrue
になります。
下記コードはユーザーが成人かつ会員である場合にのみ割引を適用する例です。
|
|
この例では、年齢が18
歳以上かつ会員である場合にのみ割引が適用されます。
and
演算子により、両方の条件が満たされた場合にのみTrue
となります。
複合条件の使用(orとandの組み合わせ)
or
とand
を組み合わせて、より複雑な条件式を作成することも可能です。
ただし、複数の論理演算子を組み合わせる場合は、条件の評価順序を明確にするために括弧()
を使用することが推奨されます。
下記コードは春休みまたは夏休み期間中で、かつ学生または年齢が18歳未満の場合に割引を適用する例です。
|
|
この例では、or
とand
を組み合わせて、休暇期間中かつ対象者である場合に割引を適用しています。
条件式を括弧で囲むことで、評価の優先順位を明確にしています。
複合条件の使用(括弧を付けない場合)
括弧を付けない場合、Pythonでは論理演算子and
とor
の優先順位に従って条件が評価されます。
and
はor
よりも優先順位が高いため、and
の条件が先に評価され、その後でor
の条件が評価されます。
この挙動は、特に複合条件を使用する際に意図しない結果を引き起こす可能性があります。
以下に、括弧を付けない場合の事例を示します。
春休みまたは夏休み期間中で、かつ学生または年齢が18歳未満の場合に割引を適用する条件を、括弧なしで記述した例です。
|
|
この条件式では、andがorよりも優先されるため、実際の評価順序は以下のようになります。
- 1.
is_summer_break and is_student
が最初に評価されます。 - 2.その結果が
True
であれば、is_spring_break or True
の評価は常にTrue
になります。 - 3.
age < 18
はこの場合、or
によって前の条件と結合されるため、この条件単独でTrue
であっても全体の条件式に影響します。
上記例では、意図した通りに動作していますが、複雑な条件では意図しない結果を引き起こす可能性があります。
例えば、is_spring_break
がTrue
で、他の条件がすべてFalse
の場合でも、割引が適用されてしまいます。
この場合、休暇期間かつ(学生または18歳未満)という条件を満たさないため、この評価順序では正確な条件判定ができていません。
括弧を使用した正確な制御
上記のように括弧を付けないと優先順位が分かりにくくなりますし、期待通りに動かなくなる可能性があります。
複合条件を正確に制御するためには、括弧を使用して評価の順序を明示的に指定することが重要です。
以下のように括弧を追加することで、期待通りの評価順序となります。
|
|
このように、括弧を適切に使用することで、複数の論理演算子を含む複雑な条件式でも、意図した通りの評価順序と結果を確実に得ることができます。
3項演算子の基本
続いてif
文が1行で書ける3項演算子について解説します。
Pythonにおける3項演算子の基本形式は以下の通りです:
|
|
条件式がTrue
の場合は値1
が、False
の場合は値2
が結果として返されます。
3項演算子の使用例
例えば、年齢に基づいて成人か未成年かを判定する場合、以下のように書くことができます:
|
|
このコードは、age
が18以上の場合は"成人"
を、そうでない場合は"未成年"
をstatus
に代入し、それを出力します。
3項演算子の利点
- 簡潔性:条件に基づく簡単な値の代入を一行で記述できます。
- 可読性:条件と結果が一目でわかるため、コードの意図を理解しやすくなります。
3項演算子の注意点
3項演算子は便利ですが、複雑な条件や多くの操作を含む場合には、可読性が低下することがあります。
その例を以下に示します。
この例では、3項演算子をネストして使用し、複数の条件を1行に詰め込んでいます。
これは一見すると簡潔に見えますが、実際にはコードの意図を迅速に理解することが難しくなります。
|
|
このコードは、年齢と地域に基づいて特定の条件を満たすかどうかを判断し、その結果に基づいてpermission
変数に値を代入しています。
しかし、このように複数の条件を一つの行で評価し、さらにネストした3項演算子を使用すると、コードの読み手が各条件の関係を正確に理解するのが難しくなります。
この例では、地域が"東京"であり、かつ年齢が18歳以上の場合は"許可”、東京であるが成人ではない場合は"不許可”、東京以外である場合は"確認必要"という判断をしています。
しかし、このロジックを追うのは一見して簡単ではなく、特に複雑な条件が絡む場合、コードの可読性を犠牲にしてしまいます。
このような場合、通常のif-else
文を使用して各条件を明確に分岐させたほうが、コードの意図を理解しやすくなります。
if文の使用例
ここからは色々なif
文の使用例を紹介していきます。
例1:ユーザー入力に基づく条件分岐
ユーザーからの入力に応じて異なるメッセージを表示します。
|
|
例2: 複数の条件の組み合わせ
年齢と学生ステータスを基に、映画の割引資格があるかを判断します。
|
|
繰り返しになりますが優先順位について確認しておきましょう。
Pythonでは、and
演算子はor
演算子よりも優先順位が高いですが、この例にはand
演算子は含まれていません。
したがって、優先順位の観点から特に注意すべき点はありません。条件式は左から右へと評価されます。
この場合特に問題ありませんが、常に優先順位は意識しておくようにしましょう。
例3: リスト内の要素の確認
特定のアイテムがリスト内に存在するかどうかをチェックします。
|
|
新しくfruits = ["りんご", "バナナ", "チェリー"]
という記述と、in
という演算子が記述されていますのでそれぞれ解説します。
リストの基本
リストは角括弧[]で囲まれ、その中にコンマ,で区切られた要素が含まれます。
この例では、fruitsという名前のリストが作成され、3つの文字列"りんご”, “バナナ”, “チェリー"が要素として含まれています。
リストの要素へのアクセス
リストの要素にアクセスするには、要素のインデックス(位置)を角括弧内に指定します。
インデックスは0から始まります。
例えば、fruitsリストの最初の要素にアクセスするには、以下のように記述します。
|
|
in
演算子の基本
in
演算子は、指定された要素があるコレクション(リスト、タプル、辞書など)内に含まれているかどうかをチェックするために使用されます。
もし要素がコレクション内に存在すれば、True
を返し、存在しなければFalse
を返します。
このコードでは、fruitsという名前のリストがあり、3つの果物の名前が含まれています。
if
文とin
演算子を使用して、“バナナ"という文字列がfruits
リスト内に存在するかどうかをチェックしています。
if "バナナ" in fruits:
この行は、「もし"バナナ"がfruitsリスト内にあれば」という条件を表しています。
条件がTrue
(つまり、“バナナ"がリスト内に存在する)場合、print("バナナがリストに含まれています!")
が実行されます。
もしFalse
(“バナナ"がリスト内に存在しない)場合、else
ブロックが実行され、print("バナナはリストに含まれていません。")
が出力されます。
例4: 範囲内の数値のチェック
数値が特定の範囲内にあるかどうかを判断します。
|
|
例5: 文字列の長さに基づく条件分岐
ユーザー名の長さに基づいて、有効かどうかをチェックします。
|
|
例6: パスワードの強度チェック
ユーザーから入力されたパスワードの強度をチェックし、条件に基づいてフィードバックを提供します。
|
|
この例では、パスワードの最小長さとスペースの有無をチェックしています。
これにより、基本的なパスワードポリシーを実装することができます。
例7: 季節に応じた活動の提案
現在の月に基づいて、適切な季節の活動を提案します。
|
|
この例では、ユーザーが入力した月に応じて、季節に合った活動を提案しています。
季節ごとに配列(リスト)を使用して、特定の月がどの季節に属するかを判断しています。
まとめ
if
文は、Pythonにおける最も基本的な制御構造の一つです。
この記事を通じて、if
文の基本的な使い方を理解し、実際のコードで条件分岐を行う方法を学びました。
プログラミングにおいて条件分岐は非常に重要な概念なので、ぜひこの知識を活用してください。
Pythonを本格的に勉強したい方は、初心者に優しく分かりやすいPyQで学ぶのが最適です。
価格もリーズナブルなのでオススメです。