Pythonのwhile
文は、特定の条件が満たされるまで繰り返し処理を行うための便利なツールです。
しかし、ループを途中で終了させたい場合や、特定の条件でスキップしたい場合もあります。
この記事では、while
文の基本的な使い方から、break
文やcontinue
文を使ったループの制御方法、さらに実践的な例までをわかりやすく解説します。
while文の基本構造
Pythonのwhile
文は、指定した条件が真である間、繰り返し処理を行うための制御構造です。
条件が偽になるとループを終了します。
while
文は、特定の条件が満たされるまで処理を繰り返したい場合に非常に便利です。
while文の基本的な使い方
while
文の基本的な構造は以下の通りです。
while 条件式:
実行する処理
条件式が真である限り、インデントされたブロック内の処理が繰り返し実行されます。
以下に具体的な例を示します。
# 1から5までの数字を出力するプログラム
count = 1
while count <= 5:
print(count)
count += 1
このプログラムでは、count
が5以下である限り、count
の値を出力し、count
を1ずつ増やしていきます。
count
が6になると条件式count <= 5
が偽となり、ループが終了します。
無限ループの例
while
文を使用する際に注意が必要なのは、条件式が常に真である場合、ループが無限に続いてしまうことです。
これを無限ループと呼びます。
無限ループは意図的に使用する場合もありますが、通常は避けるべきです。
以下は無限ループの例です。
# 無限ループの例
while True:
print("これは無限ループです")
このプログラムは、while True
という条件式が常に真であるため、永遠にこれは無限ループです
というメッセージを出力し続けます。
無限ループを停止するには、プログラムを強制終了する必要があります。
無限ループは、特定の条件が満たされるまで処理を続けたい場合に有用ですが、適切な終了条件を設定しないとプログラムが停止しなくなるため、注意が必要です。
次のセクションでは、while
文を途中で抜ける方法について詳しく説明します。
while文を途中で抜ける方法
while文を途中で抜ける方法はいくつかありますが、最も一般的なのはbreak
文を使う方法です。
また、特定の条件を満たしたときにループを終了する方法もあります。
以下でそれぞれの方法について詳しく解説します。
break文の使い方
基本的な使い方
break
文は、ループを強制的に終了させるための文です。
while文の中でbreak
文が実行されると、その時点でループが終了し、次のコードに進みます。
これにより、無限ループを防ぐことができます。
実際のコード例
以下は、break
文を使ってwhile文を途中で抜ける例です。
count = 0
while True:
print("カウント:", count)
count += 1
if count >= 5:
break # countが5以上になったらループを終了する
このコードでは、count
が5以上になるとbreak
文が実行され、whileループが終了します。
実行結果は以下のようになります。
カウント: 0
カウント: 1
カウント: 2
カウント: 3
カウント: 4
条件付きで抜ける方法
条件式の設定
while文の条件式を工夫することで、特定の条件を満たしたときにループを終了することができます。
これにより、break
文を使わずにループを制御することができます。
実際のコード例
以下は、条件式を使ってwhile文を途中で抜ける例です。
count = 0
while count < 5:
print("カウント:", count)
count += 1
このコードでは、count
が5未満の間はループが続きますが、count
が5以上になるとループが終了します。
実行結果は以下のようになります。
カウント: 0
カウント: 1
カウント: 2
カウント: 3
カウント: 4
このように、条件式を工夫することで、break
文を使わずにループを制御することができます。
どちらの方法を使うかは、具体的な状況やコードの可読性を考慮して選択すると良いでしょう。
応用的な使い方
continue文との併用
continue文の基本
continue
文は、ループの現在の反復をスキップし、次の反復に進むために使用されます。
while
文の中でcontinue
文が実行されると、その時点での残りのコードは実行されず、ループの条件チェックに戻ります。
例えば、1から10までの数字をループで処理し、偶数のときだけ何もしないで次の反復に進む場合、以下のように書くことができます。
i = 1
while i <= 10:
if i % 2 == 0:
i += 1
continue
print(i)
i += 1
このコードは、1, 3, 5, 7, 9を出力します。
偶数のときはcontinue
文によってprint
文がスキップされます。
break文とcontinue文の違い
break
文とcontinue
文はどちらもループの制御に使用されますが、その動作は異なります。
break
文: ループを完全に終了させ、ループの外のコードに制御を移します。continue
文: ループの現在の反復を終了させ、次の反復に進みます。
以下の例で違いを確認してみましょう。
i = 1
while i <= 10:
if i == 5:
break
print(i)
i += 1
このコードは、1, 2, 3, 4を出力し、i
が5になった時点でループを終了します。
一方、continue
文を使った場合は次のようになります。
i = 1
while i <= 10:
if i == 5:
i += 1
continue
print(i)
i += 1
このコードは、1, 2, 3, 4, 6, 7, 8, 9, 10を出力し、i
が5のときだけスキップします。
実際のコード例
以下は、break
文とcontinue
文を組み合わせた例です。
i = 1
while i <= 10:
if i == 5:
print("5に到達したのでループを終了します")
break
elif i % 2 == 0:
i += 1
continue
print(i)
i += 1
このコードは、1, 3を出力し、i
が5になった時点でループを終了します。
偶数のときはcontinue
文によってスキップされます。
else節との併用
else節の基本
while
文にはelse
節を追加することができます。
else
節は、while
ループが正常に終了した場合に実行されます。
つまり、break
文によってループが終了しなかった場合に実行されます。
以下は、else
節を使った基本的な例です。
i = 1
while i <= 5:
print(i)
i += 1
else:
print("ループが正常に終了しました")
このコードは、1, 2, 3, 4, 5を出力し、その後に「ループが正常に終了しました」と表示します。
break文とelse節の関係
break
文が実行されると、else
節は実行されません。
これにより、ループが途中で終了したかどうかを判別することができます。
以下の例で確認してみましょう。
i = 1
while i <= 5:
if i == 3:
break
print(i)
i += 1
else:
print("ループが正常に終了しました")
このコードは、1, 2を出力し、i
が3になった時点でループを終了します。
else
節は実行されません。
実際のコード例
以下は、break
文とelse
節を組み合わせた実際のコード例です。
i = 1
while i <= 5:
if i == 3:
print("3に到達したのでループを終了します")
break
print(i)
i += 1
else:
print("ループが正常に終了しました")
このコードは、1, 2を出力し、i
が3になった時点で「3に到達したのでループを終了します」と表示してループを終了します。
else
節は実行されません。
一方、break
文が実行されない場合の例も見てみましょう。
i = 1
while i <= 5:
print(i)
i += 1
else:
print("ループが正常に終了しました")
このコードは、1, 2, 3, 4, 5を出力し、その後に「ループが正常に終了しました」と表示します。
実践的な例
ここでは、while文を使った実践的な例を紹介します。
特に、ユーザー入力やファイル読み込み時にループを終了する方法について詳しく解説します。
ユーザー入力を使ったループの終了
基本的な例
ユーザー入力を使ってループを終了する場合、特定のキーワードや条件を満たしたときにループを抜けるようにします。
例えば、ユーザーが exit
と入力したときにループを終了するプログラムを考えてみましょう。
実際のコード例
以下に、ユーザー入力を使ってループを終了する例を示します。
while True:
user_input = input("何か入力してください(終了するには 'exit' と入力):")
if user_input == 'exit':
print("ループを終了します。")
break
else:
print(f"あなたは '{user_input}' と入力しました。")
このコードでは、無限ループの中でユーザーからの入力を受け取り、入力が exit
であればループを終了します。
それ以外の入力があった場合は、その入力を表示します。
ファイル読み込み時のループの終了
基本的な例
ファイルを読み込む際に、特定の条件を満たしたときにループを終了する方法もあります。
例えば、ファイルの内容を1行ずつ読み込み、特定のキーワードが見つかったらループを終了するプログラムを考えてみましょう。
実際のコード例
以下に、ファイル読み込み時にループを終了する例を示します。
# 例として、sample.txt というファイルを用意してください
# ファイルの内容:
# これはテストファイルです。
# 特定のキーワードが含まれています。
# この行でループを終了します。
# まだ続きます。
with open('sample.txt', 'r', encoding='utf-8') as file:
while True:
line = file.readline()
if not line:
break # ファイルの終わりに達したらループを終了
print(line.strip())
if 'ループを終了します' in line:
print("特定のキーワードが見つかりました。ループを終了します。")
break
このコードでは、sample.txt
というファイルを1行ずつ読み込みます。
各行を表示し、特定のキーワード「ループを終了します」が含まれている場合にループを終了します。
ファイルの終わりに達した場合もループを終了します。
これらの例を通じて、while文を使ったループの終了方法を理解できたでしょうか。
ユーザー入力やファイル読み込みなど、さまざまなシチュエーションで応用できるので、ぜひ試してみてください。