PR

【Python】if文の使い方について解説

Python

本日は、Pythonにおけるif文についてご紹介します。

if文を使う場面は主にフロー制御を行うときに登場します。

Pythonにおけるフロー制御(制御構文)では、if文を使用して条件に基づいて異なる処理を実行できます。

if文にはいくつかのバリエーションがあり、条件分岐の複雑さや状況に応じて使い分けることができます。


1. 基本的な if 文

条件が真(True)の場合に処理を実行します。

x = 10
if x > 5:
print("xは5より大きい")

出力:

xは5より大きい

2. if-else 文

条件が偽(False)の場合に別の処理を実行します。

x = 3
if x > 5:
print("xは5より大きい")
else:
print("xは5以下")

出力:

xは5以下

3. if-elif-else 文

複数の条件をチェックし、最初に真となった条件の処理を実行します。どれも当てはまらない場合はelseブロックが実行されます。

x = 7
if x > 10:
print("xは10より大きい")
elif x > 5:
print("xは5より大きいが10以下")
else:
print("xは5以下")

出力:

xは5より大きいが10以下

4. ネストされた if 文

if文の中にさらにif文を入れることで、条件の入れ子構造を作成できます。

x = 8
if x > 5:
if x < 10:
print("xは5より大きく10未満")
else:
print("xは10以上")
else:
print("xは5以下")

出力:

xは5より大きく10未満

5. 複数条件の組み合わせ

a. 論理演算子 (and, or, not) を使う

複数の条件を論理演算子で結合して扱えます。

x = 7
if x > 5 and x < 10:
print("xは5より大きく10未満")

出力:

xは5より大きく10未満

b. in / not in を使う

特定の値がリストや文字列に含まれるかどうかを確認できます。

fruits = ["apple", "banana", "cherry"]
if "apple" in fruits:
print("リンゴはリストに含まれています")

出力:

リンゴはリストに含まれています

6. 短縮形の if(ワンライナー)

if文は簡潔な場合に1行で書けます。

a. ワンライナー if

x = 10
if x > 5: print("xは5より大きい")

出力:

xは5より大きい

b. 三項演算子

三項演算子を使うと、条件に応じた値を1行で設定できます。

x = 10
result = "大きい" if x > 5 else "小さい"
print(result)

出力:

大きい

7. 条件がない if(例外的なケース)

if文では、値自体が真理値として評価されます。

a. 値の真理値の利用

  • 真として評価される: 非ゼロの数値、非空のリスト/辞書/文字列
  • 偽として評価される: 0, None, 空のリスト/辞書/文字列
x = [1, 2, 3]
if x: # リストが空でない場合
print("xは空ではありません")

出力:

xは空ではありません

8. Python特有の条件式

a. 条件式の連結

Pythonでは、数学の記法のように条件式を連結できます。

x = 7
if 5 < x < 10: # 5 < x and x < 10 と同じ
print("xは5より大きく10未満")

出力:

xは5より大きく10未満

9. 実行をスキップする pass

if文の中で何も実行せずに処理をスキップする場合はpassを使います。

x = 10
if x > 5:
pass # 何もしない
else:
print("xは5以下")

10. 例外処理との組み合わせ

if文はtry-exceptブロックと組み合わせてエラーを防ぐ処理を組み込むこともあります。

x = "10"
if x.isdigit(): # 数字かどうかを確認
x = int(x)
print(x * 2)
else:
print("xは数字ではありません")

出力:

20

forループ

一定回数処理を繰り返したいときはforループを使います。

if文とforループはよく組み合わせせて使うことがあるので、合わせて覚えておきましょう。

a. 基本的なループ

リストやタプルなどのシーケンスの各要素を繰り返し処理します。

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)

出力:

apple
banana
cherry

b. range を使ったループ

range関数で数値の範囲を指定して繰り返します。

for i in range(5):
print(i) # 0から4まで出力

範囲のカスタマイズ:

for i in range(1, 10, 2):  # 開始, 終了, ステップ
print(i) # 1, 3, 5, 7, 9

c. インデックス付きループ(enumerate)

リストの要素とインデックスを同時に取得します。

fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")

出力:

0: apple
1: banana
2: cherry

d. 複数のシーケンスを同時に処理(zip)

複数のリストを同時にループ処理できます。

names = ["太郎", "花子", "次郎"]
ages = [25, 30, 20]
for name, age in zip(names, ages):
print(f"{name}は{age}歳です")

出力:

太郎は25歳です
花子は30歳です
次郎は20歳です

e. リスト内包表記

短いループ処理ならリスト内包表記を使うと簡潔に書けます。

squares = [x**2 for x in range(5)]
print(squares) # [0, 1, 4, 9, 16]

条件付きリスト内包表記:

evens = [x for x in range(10) if x % 2 == 0]
print(evens) # [0, 2, 4, 6, 8]

f. 辞書のループ

辞書のキーや値をループで取得します。

person = {"name": "太郎", "age": 25, "city": "東京"}
for key, value in person.items():
print(f"{key}: {value}")

出力:

name: 太郎
age: 25
city: 東京

g. 逆順のループ

reversed関数を使うと逆順にループできます。

for i in reversed(range(5)):
print(i) # 4, 3, 2, 1, 0

h. セットのループ

セット(集合)は順序がないため、ランダムな順序で要素がループされます。

colors = {"red", "green", "blue"}
for color in colors:
print(color)

3. if文とforループの組み合わせ

a. 条件付きのループ処理

ループ内でif文を使って条件をチェックします。

numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num % 2 == 0:
print(f"{num}は偶数です")

出力:

2は偶数です
4は偶数です

b. ネストされたループとif

ループの中に別のループと条件文を組み合わせる例です。

for i in range(3):
for j in range(3):
if i == j:
print(f"iとjが等しい: {i}")

出力:

iとjが等しい: 0
iとjが等しい: 1
iとjが等しい: 2

c. 条件付きリスト内包表記

if文をリスト内包表記の中に組み込むことで、簡潔に条件を適用したリストを作成できます。

squares = [x**2 for x in range(10) if x % 2 == 0]
print(squares) # 偶数のみ二乗する

出力:

[0, 4, 16, 36, 64]

d. ループ終了の制御(break / continue)

  • break: ループを途中で終了
  • continue: その回の処理をスキップして次の繰り返しへ進む
for i in range(5):
if i == 3:
break # ループを終了
print(i)

for i in range(5):
if i == 3:
continue # 3のときだけスキップ
print(i)

出力:

# break の場合
0
1
2

# continue の場合
0
1
2
4

4. その他の応用例

a. else付きのforループ

forループがbreakせずにすべて実行された場合にのみ、elseブロックが実行されます。

for i in range(5):
if i == 3:
break
else:
print("ループは正常終了")

出力:

# breakされるので何も出力されない

b. 複雑な条件処理

リストの中から特定の条件を満たす要素を抽出する例です。

numbers = [1, 3, 6, 9, 12]
result = [n for n in numbers if n % 3 == 0 and n > 5]
print(result) # [6, 9, 12]

まとめ

Pythonのif文は以下のように柔軟な条件分岐を実現します:

  • 単純な条件分岐(if / if-else / if-elif-else
  • 論理演算子やメンバーシップ演算子の利用
  • ワンライナーや三項演算子の活用
  • ネストや連結条件の応用

forループは基本的な反復処理からインデックス付き、複数シーケンスの同時処理、条件付き反復まで幅広く、両者を組み合わせることで、より柔軟で効率的な処理が可能です。

シンプルな条件分岐から複雑な制御まで対応可能で、さまざまなシチュエーションに対応できます!

タイトルとURLをコピーしました