Pythonでwhile
ループを使用する際、ループが終了しない問題に直面することがあります。この記事では、その一般的な原因と解決策について説明します。
原因1: 条件の評価
while
ループは、条件がTrue
である限り続行します。したがって、条件がFalse
になるように設計されていない場合、ループは終了しません。
var = 0
while (var < 1 or var > 100):
var = raw_input('Enter the block number ')
if (var >= 1 and var <= 100):
print '\\nBlock Number : ', var
else:
print 'ERROR!!! Enter again.'
上記のコードでは、var
が1から100の範囲になるまでループが続行します。しかし、raw_input
関数は文字列を返すため、整数との比較が常にFalse
を返します。これがループが終了しない原因です。
解決策1: 入力の型変換
raw_input
から返される入力を整数に変換することで、この問題を解決できます。
var = 0
while (var < 1 or var > 100):
var = int(raw_input('Enter the block number '))
if (var >= 1 and var <= 100):
print '\\nBlock Number : ', var
else:
print 'ERROR!!! Enter again.'
この修正により、var
は整数として評価され、適切にwhile
ループが終了します。
原因2: ループ内でのbreak
の使用
for
ループやwhile
ループ内でbreak
を使用すると、そのループだけが終了します。したがって、while
ループ内のfor
ループからbreak
すると、while
ループは終了しません。
解決策2: 条件変数の使用
ループを制御するための条件変数を使用することで、この問題を解決できます。
var = 0
while True:
var = int(raw_input('Enter the block number '))
if (var >= 1 and var <= 100):
print '\\nBlock Number : ', var
break
else:
print 'ERROR!!! Enter again.'
この修正により、var
が1から100の範囲になったときにwhile
ループが終了します。
以上、Pythonのwhile
ループが終了しない問題の一般的な原因と解決策について説明しました。これらのテクニックを使用して、Pythonのwhile
ループを効果的に制御することができます。