プログラミングにおいて、単純な処理だけでなく、状況に応じて異なる処理を行ったり、同じ処理を繰り返すことができる仕組みが必要です。これを実現するために、Pythonでは「条件分岐」と「ループ処理」が用意されています。
この章では、Pythonのif文を使った条件分岐と、for文やwhile文を使ったループ処理について詳しく学びます。条件分岐やループ処理を理解することで、より複雑なプログラムを書けるようになります。
5.1 条件分岐(if文)
条件分岐は、ある条件が真(True)か偽(False)かによって、実行する処理を変えるために使います。Pythonでは、if文を使って条件分岐を行います。
5.1.1 基本的なif文の書き方
基本的なif文の構造は以下の通りです:
if 条件:
条件がTrueの場合に実行する処理
具体例を見てみましょう。
x = 10
if x > 5:
print("xは5より大きい") # 条件がTrueなので、この処理が実行される
この例では、x
の値が 5
より大きいかどうかを判断しています。条件が True
なので、print()
の内容が実行され、xは5より大きい
と表示されます。
5.1.2 if-else文
if
文に加えて、条件が False
だった場合に別の処理を行いたいときは、else文を使います。
x = 3
if x > 5:
print("xは5より大きい")
else:
print("xは5以下です") # 条件がFalseなので、この処理が実行される
この例では、x
の値が 5
より小さいため、else
ブロックの処理が実行されます。
5.1.3 if-elif-else文
複数の条件をチェックしたい場合は、elif文を使います。elif
は「else if」の略で、最初の if
条件が False
だった場合に、さらに別の条件をチェックすることができます。
x = 7
if x > 10:
print("xは10より大きい")
elif x > 5:
print("xは5より大きいが10以下です") # この条件がTrueなので、この行が実行される
else:
print("xは5以下です")
この例では、x
の値が 7
なので、x > 5
の条件が True
となり、xは5より大きいが10以下です
というメッセージが表示されます。
5.1.4 ネストしたif文
if文の中にさらにif文を入れることを**ネスト(入れ子)**といいます。ネストを使うと、複数の条件に対してさらに詳細な条件を設定できます。
x = 15
if x > 10:
print("xは10より大きい")
if x > 20:
print("xは20より大きい")
else:
print("xは10より大きいが20以下です")
この例では、まず x > 10
の条件が True
であるため、次の条件に進みます。次に x > 20
が False
なので、else
のブロックが実行され、xは10より大きいが20以下です
と表示されます。
5.2 ループ処理(繰り返し処理)
ループ処理を使うことで、同じ処理を何度も繰り返すことができます。Pythonでは、主にfor文とwhile文がループ処理に使われます。
5.2.1 for文
for文は、指定された回数や範囲内で繰り返し処理を行うために使用します。特に、リストや文字列などのイテラブルオブジェクト(繰り返し処理可能なオブジェクト)の各要素に対して処理を行うのに便利です。
例:リストの各要素に対して処理を行う
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
このコードでは、リスト fruits
の各要素に対して for
ループが繰り返され、それぞれの要素が fruit
という変数に代入されます。結果として次のように表示されます。
apple
banana
cherry
例:数値の範囲を繰り返す(range()
関数)
range()
関数を使うと、特定の範囲の数値を生成し、それに対してループ処理を行うことができます。
for i in range(5):
print(i)
この例では、0
から 4
までの5回ループが実行され、次のように出力されます。
0
1
2
3
4
range(5)
は 0
から始まる5つの整数を生成します(0
から 4
まで)。注意すべき点は、range()
で生成される範囲は開始値から終値-1までであることです。
5.2.2 while文
while文は、条件が True
の間、処理を繰り返すループです。条件が False
になると、ループが終了します。
基本構文
while 条件:
条件がTrueの場合に実行する処理
例:カウンタを使ったwhileループ
count = 0
while count < 5:
print(count)
count += 1
このコードでは、count
の値が 5
より小さい間、while
ループが繰り返されます。ループの中で count
の値を1ずつ増やしていくため、ループは次のように出力されます。
0
1
2
3
4
count
が 5
になった時点で条件が False
になり、ループが終了します。
5.3 ループの制御:breakとcontinue
ループ処理中に、特定の条件でループを中断したり、次の繰り返しにスキップしたい場合があります。Pythonでは、break
と continue
を使ってループの動作を制御することができます。
5.3.1 break文
break
文は、ループを途中で終了するために使います。break
が実行されると、ループ全体が即座に終了します。
for i in range(10):
if i == 5:
break # ループが終了する
print(i)
この例では、i
が 5
になった時点で break
が実行され、ループが終了します。そのため、出力は次のようになります。
0
1
2
3
4
5.3.2 continue文
continue
文は、現在の繰り返しをスキップし、次の繰り返しに進むために使います。continue
が実行されると、その時点でループ内の残りの処理がスキップされ、次の反復が始まります。
for i in range(5):
if i == 2:
continue # この繰り返しをスキップ
print(i)
この例では、i
が 2
の時に continue
が実行され、その回の処理がスキップされます。結果として次のように出力されます。
0
1
3
4
5.4 ループのネスト
ループは、他のループの中に**ネスト(入れ子)**することができます。これにより、二重ループや多重ループを使って、複雑な繰り返し処理を実行できます。
例:ネストされたforループ
for i in range(3):
for j in range(2):
print(f"i = {i}, j = {j}")
このコードでは、外側のループが i
の値を 0
から 2
まで繰り返し、内側のループが j
の値を 0
から 1
まで繰り返します。結果として次のように出力されます。
i = 0, j = 0
i = 0, j = 1
i = 1, j = 0
i = 1, j = 1
i = 2, j = 0
i = 2, j = 1
5.5 無限ループ
無限ループとは、終了条件が満たされず、永遠に繰り返しが続くループのことです。通常は避けるべき状況ですが、意図的に無限ループを作成し、特定の条件で手動でループを終了させることもあります。
例:無限ループとbreakの併用
while True:
response = input("終了するには 'exit' と入力してください: ")
if response == "exit":
break # 'exit' と入力されたらループを終了する
このコードでは、True
が常に True
なので、while
ループは無限に繰り返されますが、ユーザーが "exit"
と入力すると break
によってループが終了します。
まとめ
この章では、Pythonの**条件分岐(if文)とループ処理(for文、while文)**について詳しく学びました。条件分岐を使うことで、プログラムの動作を柔軟に制御でき、ループ処理を使うことで効率的に同じ処理を繰り返すことができます。また、break
や continue
を使ってループを制御する方法も学びました。