Pythonにおけるwhile
ループは、プログラムの流れを制御するための強力なツールです。定義済みのシーケンスを反復処理するfor
ループとは異なり、while
ループは指定された条件が真である限り実行を続けます。これは、反復回数が事前に不明な場合に特に役立ちます。
目次
基本的なWhileループ構造
while
ループの基本的な構文は簡単です。
while condition:
# 繰り返し実行されるコード
# ...
condition
は、各反復の前に評価されます。True
と評価された場合、インデントされたコードブロックが実行されます。False
と評価された場合、ループは終了し、プログラムはループの後のステートメントから続行されます。
ループ実行の制御:break
とcontinue
break
とcontinue
ステートメントは、ループ動作を細かく制御します。
break
:条件に関係なく、ループを直ちに終了します。continue
:現在の反復の残りの部分をスキップし、次の反復に進みます。
count = 0
while count < 5:
count += 1
if count == 3:
continue # 3の出力はスキップ
print(count)
while count < 10:
count += 1
if count == 7:
break # countが7のときループを終了
print(count)
while-else
構文
Pythonのwhile
ループは、オプションのelse
ブロックを独自にサポートしています。このelse
ブロックは、ループが*自然に*完了した場合、つまりループ条件がFalse
になった場合にのみ実行されます。重要なのは、break
ステートメントを使用してループが終了した場合、else
ブロックは実行されないということです。これは、中断なしにループが終了した場合にのみアクションを実行する必要がある状況を処理するための明確な方法を提供します。
count = 0
while count < 5:
print(count)
count += 1
else:
print("ループは正常に完了しました!")
count = 0
while count < 5:
if count == 3:
break
print(count)
count += 1
else:
print("ループは正常に完了しませんでした!") # これは出力されない
実践例
while
ループの実用的な使用方法を示すいくつかの例を以下に示します。
例1:ユーザー入力の検証
while True:
try:
age = int(input("年齢を入力してください:"))
if age >= 0:
break # 有効な年齢が入力された場合、ループを終了
else:
print("年齢は負の数にはできません。")
except ValueError:
print("無効な入力です。数値を入力してください。")
print(f"あなたの年齢は:{age}")
例2:カウントダウンのシミュレーション
import time
countdown = 10
while countdown > 0:
print(countdown)
time.sleep(1) # 1秒間一時停止
countdown -= 1
print("発射!")
無限ループの回避
while
ループにおけるよくある落とし穴は、無限ループ、つまり決して終了しないループを作成することです。これは通常、ループ条件がFalse
になることがない場合に発生します。ループ条件が最終的にFalse
と評価されることを常に確認してください。ループのロジックを注意深く調べ、条件に影響を与える変数がループ本体内で適切に更新されていることを確認してください。