このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Python入門】条件に一致しない場合のelse節

条件に一致しない場合のelse節
条件分岐は、プログラムの実行フローを動的に変化させるための基本的な手法です。中でも、if 文は条件が成立しない場合に別の処理を実行するための「else 節」を伴うことで、より柔軟な制御が可能となります。
ここでは、if文とそれに続くelse 節を用いて、条件に一致しなかった場合の処理をどのように記述するかについて、基本構文、実践例、注意点などを具体例や表を交えて解説します。例としてユーザの年齢を入力して、18歳以上なら成人、そうでなければ未成年と表示するプログラムを取り上げます。

プログラムのダウンロード
「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。
1.if文とelse節の基本概念
1.1. 基本構文と文法
if文は、条件式が True の場合に実行する文(ブロック)を定義し、else節は条件式がFalseの場合に実行する文を指定します。基本的な構文は次の通りです。
if 条件式:
文1
文2
else:
文3
文4
解説
- 条件式: True または False に評価される式を記述します。
- コロン (:): 条件式の終了と、以降がif文またはelse節のブロックであることを示します。
- インデント: if 節内およびelse節内の文は、同じレベルのインデント(通常4個の空白)で記述する必要があります。これにより、どの文がどのブロックに属するかが明確になります。
1.2. else節の役割と基本例
else 節は、if 文の条件式がFalseの場合に実行される文群を定義します。これにより、条件に一致しない場合の処理を明確に分けることができます。
サンプルプログラム
以下のプログラムでは、ユーザから年齢を入力してもらい、その値が18以上なら「あなたは成人です」と表示し、そうでなければ「あなたは未成年です」と表示します。
# ユーザから年齢を入力(input関数で文字列を取得し、int関数で整数に変換)
age = int(input("年齢を入力してください: "))
# 18歳以上かどうかの条件分岐
if age >= 18:
print("あなたは成人です。")
print("ご来場ありがとうございます。")
else:
print("あなたは未成年です。")
実行結果
年齢を入力してください: 20
あなたは成人です。
ご来場ありがとうございます。
解説
input("年齢を入力してください: ")
により、キーボードからの入力を促すプロンプトが表示され、ユーザが入力した文字列が返されます。int()
関数でその文字列を整数に変換し、変数age
に代入します。if age >= 18:
で年齢が18以上かどうかを評価し、Trueの場合にifブロック内の2つのprint文が実行されます。- 条件がFalseの場合、elseブロック内のprint文が実行され、「あなたは未成年です。」が表示されます。
2.複数の文を実行する場合の記述方法と注意点
2.1. ブロック内での複数文の記述
if 文や else節のブロック内には、複数の文を記述することが可能です。これらはすべて同じインデント幅で記述される必要があります。下記の例は、if 節とelse節の両方に複数の文を含む場合の記述例です。
実行結果
# 例: ユーザの年齢に基づく歓迎メッセージ
age = int(input("年齢を入力してください: "))
if age >= 18:
print("あなたは成人です。")
print("入場許可が下りました。")
print("楽しんでください!")
else:
print("あなたは未成年です。")
print("申し訳ありませんが、入場はできません。")
実行結果
年齢を入力してください: 15
あなたは未成年です。
申し訳ありませんが、入場はできません。
解説
- if 節内の3行の print文は、条件がTrueの場合に全て実行されます。
- else 節内の2行の print文は、条件が False の場合に実行され、各文はインデントでブロックとしてまとめられています。
- インデントが正しくないと、Pythonはどの文が条件分岐に属するかを判断できず、構文エラーとなります。
2.2. 1行で記述する if-else文の注意点
Pythonでは、if 文と else 節を1行にまとめることも可能ですが、可読性の低下や後々のメンテナンスを考えると、複数行に分けた記述が推奨されます。
# 1行で記述する場合の例(簡易的な条件分岐)
if age >= 18: print("成人です。"); print("ようこそ!")
解説
- この書き方では、条件式の後にコロン(:)を記述し、セミコロン(;)で各文を区切っています。
- 1行で記述すると、コードが短くなりますが、読みやすさや保守性が低下するため、標準的なコーディングスタイル(PEP8)では推奨されません。
下記の表は、複数行と1行で記述する if-else文の例をまとめたものです。
記述形式 | コード例 | 説明 |
---|---|---|
複数行で記述 | python<br>if age >= 18: print("成人です。") print("歓迎します。") else: print("未成年です。") | インデントを用いてif節とelse節のブロックを明示的に区切る。 |
1行で記述(セミコロン使用) | if age >= 18: print("成人です。"); print("歓迎します。") else: print("未成年です。") | 1行にまとめるが、可読性が低く推奨されない。 |
まとめ
if文とそれに伴うelse 節を使うことで、条件に一致しない場合の処理を明確に分けることができ、プログラムの実行フローに柔軟性を持たせることができます。
- 基本構文: if条件式: ブロック、else: ブロック と記述し、条件が True の場合にifブロック、False の場合にelseブロック内の文が実行されます。
- 複数の文の実行: if 節や else 節内に複数の文を記述する場合、インデントを揃える必要があり、これがプログラムの構造を明確にします。
- 1行記述の注意点: 1行で記述する方法もありますが、可読性と保守性の点から、複数行に分けた記述が望ましいです。
これらの知識を活用して、条件に応じた複数の処理を確実に実行するプログラムを作成し、ユーザの入力やシステムの状態に基づいた柔軟な動作を実現しましょう。