Pythonにおいて、ループは非常に重要な概念の一つです。その中でもwhile構文は、特定の条件が真の間、同じブロックのコードを繰り返し実行するために使用されます。
ここではPythonにおける制御構文、「while構文」について解説しています。
この記事の対象
while構文の型
while 条件式:
#繰り返し処理
else:
#while終了後の処理
while構文は条件式を単純に繰り返す構文です。whileを終えたらelseを用いてwhileが抜けた処理(False)を示すことが重要です(終了条件の定義)。while構文の条件式がTrueの場合や記述ミスで永遠とプログラムが処理を続ける場合は、強制終了させる必要があります。
強制終了は[Ctrl]+[C]キーになります。
while構文を用いた使用例
カウントダウン
count = 5
while count > 0:
print(count)
count -= 1;
else:
print("End")
上記のプログラムは5から1までの数値をcountするものです。0になるまで処理を繰り返すプログラムとなっています。1までcountしたら最後の処理として「End」を出力する内容となっています。
Breakで抜ける方法
i = 0
while True:
i = i + 1
print(i)
if i == 10:
print('!!BREAK!!')
break
While構文では条件を満たしたらBreakで抜ける方法が良く使用されます。
上記のプログラムは1を足していき、10になったら抜ける内容になっています。
入力の検証(条件を満たすまで繰り返し)
valid_input = False
while not valid_input:
user_input = input("整数を入力してください: ")
if user_input.isdigit():
valid_input = True
else:
print("無効な入力です。")
print(f"入力された数値は {user_input} です。")
上記のプログラムは、ユーザーに整数の入力を要求し、無効な入力が行われた場合に繰り返し入力を求め続けるものになります。有効な入力が行われるまで続行します。
Fibonacci数列
a, b = 0, 1
while a < 1000:
print(a, end=', ')
a, b = b, a + b
上記のプログラムは、フィボナッチ数列を生成し、1000未満の数値を表示するものになります。a と b は数列の前の2つの要素を表しています。
結果
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987,
Whileループのエラーと回避方法
無限ループ
誤って無限ループを作成する可能性があります。この問題を回避するために、ループ内での条件の更新や終了条件の確認を確実に行う必要があります。
# 無限ループの例
while True:
print("これは無限ループです。")
# 正しい終了条件を設定
count = 0
while count < 5:
print(count)
count += 1
条件の誤った設定
条件を誤って設定することがあります。条件を正確に検討し、設定する必要があります。
# 誤った条件の例
x = 10
while x > 5:
print(x)
x -= 1
この例では、初めから条件が偽であり、ループは実行されません。条件を x >= 5 とする必要があります。
まとめ
while構文は繰り返し処理を行うことで条件がTrueになるまで繰り返し処理を行います。適切な条件を設定し、エラーを避けるために慎重にコードを検討し、デバッグすることが重要です。