Pythonのwhileで複数条件 無限ループをifで抜ける

Pythonのwhile文

Pythonのwhile文

Pythonのwhileの構文は以下の通り。

while_stmt ::= "while" assignment_expression ":" suite
["else" ":" suite]

関連 8. 複合文 (compound statement) — Python 3.10.4 ドキュメント

たとえば以下のように記述すると、変数iが1の間はループしつづけるんですね。

while i==1:
処理1
  処理2
  :
  :

以下のサンプルコードは、変数iが10未満の間ループし続けます。変数iはループ中で+1されるので、10以上になるとループが終了します。

$ cat ./while_sample.py
#!/usr/bin/python3

print ( "loop 1 " )
i = 0
while i < 10:
print( i )
i = i + 1

実行するとこうなります。

loop 1
0
1
2
3
4
5
6
7
8
9

Pythonのwhile Trueで無限ループ

Pythonのwhileを使って無限ループを作るには、whileの条件文を常にTrueにしておけばOKです。

#!/usr/bin/python3
while True:
print( "loop.." )

実行するとこうなります。

loop..
loop..
loop..
loop..
loop..
loop..
loop..
loop..
 : 
 :

一般的に、sleepなどを入れずに無限ループにするとCPU負荷が上がるので、sleepを入れています。端末実行時にsleepなしで無限ループさせると、Ctrl+Cでなかなか停止できないことがあります。

#!/usr/bin/python3
import time
while True:
print( "loop.." )
# 1秒間のスリープ
time.sleep(1.0)

timeモジュールをimportして、ループ内にtime.sleepで1.0秒のスリープを入れています。

関連 pythonのimport

PythonのWhileをif~breakで抜ける

Pythonのループを抜けるには、Whileで指定した条件を満たすか、break文を実行します。

無限ループの場合は、ループ中にif分とbreak文を組み合わせて記述しておくことで、特定の条件下でループを終了させることができるんですね。

関連 Pythonのif文

以下はwhileの継続条件はTrueで無限ループにし、ループ中でif文を使って条件判定をおこない、変数iが10以上になったらbreakでループを抜けるという例です。

$ cat ./while_sample2.py
#!/usr/bin/python3

print ( "loop 2 " )
i = 0
while True:
print( i )
i = i + 1
if( i >= 10 ):
break

実行するとこうなります。

loop 2
0
1
2
3
4
5
6
7
8
9

python whileで複数条件を指定

while文には複数の継続条件を指定することができます。以下の例では、iが10未満またはjが10未満の場合にループを継続します。

$ cat while_sample3.py
#!/usr/bin/python3

print ( "loop 3 " )
i = 0
j = 0
while i < 10 or j < 10:
print( "i=%d" % i )
print( "j=%d" % j )
i = i + 1
j = j + 0.5

実行するとこうなります。iが10以上になっても、jが10未満の場合はループが継続します。

loop 3
i=0
j=0
i=1
j=0
i=2
j=1
i=3
j=1
i=4
j=2
i=5
 :
 :
i=16
j=8
i=17
j=8
i=18
j=9
i=19
j=9

Pythonのwhileのまとめ

まとめ

  • PythonのWhileは指定した条件が成立している間、ループを継続する
  • Whileで無限ループを作るには、継続条件にTrueを指定。ifとbreakでループを終了も可能
  • Whileの条件に複数の条件指定が可能