Python while true 使い方、無限ループ強制終了まで分かりやすく解説!

Python while true 使い方、無限ループ強制終了
目次

while文

繰り返し

while文

「while文」とは、繰り返し処理の1つで、指定された条件式が「True」の間は、処理が繰り返されることになります。
そして、条件式が「False」になった時に「while文」は終了することになります。

Python while文の書き方

Pythonの繰り返し処理では「for文」と「while文」が使われます。
「while文」の書き方は、

while 条件式 :
処理1
処理2
処理3

条件式が「True」の間は、While文の処理が繰り返し実行され、条件式が「False」になった場合、終了します。

(例)aが1のときに1ずつ足していき、5未満の間は処理を繰り返します。

a = 1
while a < 5:
    print(a)
    a = a + 1

# 実行結果:1234

「for文」は回数を指定し、その回数分、繰り返し処理を行いますが、「while文」は、条件を指定し、その条件が「True」の間は繰り返し処理を行い、「False」になれば繰り返し処理を抜けるという違いがあります。

while true

「while文」の条件式に「True」を指定すると、無限にループが繰り返されます。
while True:

(例)aが1のときに1ずつ足していく処理を繰り返します。

a = 1
while True:
    a = a + 1
    print(a)

# 実行結果: (無限に足し続けます。)

while trueによる無限ループの使い方

繰り返し

while Trueによる無限ループの使い方

普通に考えると「無限ループ」は無意味なものであったり、プログラミングミスから起こると思いがちですが、
while trueで「無限ループを活用する」ことと「無限ループに陥る」こととでは違いがあるのです。

while trueとif + break(無限ループを活用する)

例えば、「while文」で条件式が最初から「False」の場合、1回も処理が実行されずに終了するのですが、
必ず1回は処理を実行したい場合、条件文に「while True:」を記述すると、条件が常にTrueになり、無限に繰り返し処理が続くことになります。

そして、実行したい処理に続けて、「if文」と「break」を書いていくことで、無限ループを抜けることができます。
また、逆を言えば、while 無限ループの止め方や、無限ループを抜けるためのキーは、if + breakを使うということです。

if + break

このようにすることで、「if文」の条件判定の前に処理があるので、必ず1回は実行され、無限ループを活用することができるのです。

(例)aが10のときに1ずつ足していく処理を繰り返します。

a = 10
while a < 9:
    print(a)
    a = a + 1

# 実行結果: (実行されません。)

(例)aが10のときに1ずつ足していく処理を繰り返します。最低限1回は処理をしたいので、while Trueとif + breakを使う場合

a = 10
while True:
    print(a) 
    a = a + 1
    if a >= 10:
        break

# 実行結果: 10

while trueとinput(無限ループを活用する)

無限ループの使い方として、while trueとinputを使って、入力された値が条件を満たすまでループすることができます。

(例)アルファベットを7文字以上入力されるまで繰り返し処理をします。

min_length = 6
while True: 
    name = input("アルファベットを7文字以上入力してください:")
    if len(name) > min_length and name.isalpha():
        break
print("入力確認:{0} ".format(name))

実行すると、次のinput()の処理で入力を求められるので、「abc」と入力すると、

アルファベットを7文字以上入力してください:abc

と表示され、再度入力を求められます。(7文字以上入力しないと繰り返されます。)
再度、「abcdefg」と入力し実行すると、

入力確認:abcdefg

となります。

else ループ正常終了後の処理

繰り返し

else ループ正常終了後の処理

while文によるループの条件式が「False」になるまで正常に実行された後に、新たに処理を行いたい場合は「else」を使います。

(例)

a = 0
while a < 3:
    print(a)
    a += 1
else:
    print('正常に終了しました。')

# 実行結果: 
0
1
2
正常に終了しました。

if continue 処理のスキップ

繰り返し

if continue 処理のスキップ

「if break:」では、ループ全体が終了しますが、「if+continue:」はブロック内の「continue文」以降の処理がスキップされるのみで、「while文」ループは継続されますから、最後にelseの処理を書きます。

(例)

while a < 3:
    if a == 1:
        print('continue')
        a += 1
        continue
    print(a)
else:
    print('正常に終了しました。')
    a += 1

# 実行結果: 
0
continue
2

(注)変数に対する処理をcontinueの後ろに書くと、変数の値が更新されずに無限ループに陥ってしまうので書き方に注意してください。

無限ループ 強制終了(無限ループに陥った場合)

繰り返し

無限ループ 強制終了(無限ループに陥った場合)

条件式の記述を誤ると意図せずに無限ループに陥ってしまうことがあります。
無限ループを強制終了させる対処方法を解説します。

(例)

while True:
    print("help")

# 実行結果: (無限ループとなり「help」を繰り返し表示し続けます。)

このような場合は、下記の方法で強制終了させ、無限ループから脱出させます。

  • Windowsの場合: 「Ctrl」を押しながら「C」を押す。
  • Macの場合: 「control」を押しながら「C」を押す。

無限ループ 負荷について

繰り返し

無限ループ 負荷について

無限ループ に陥ってしまった場合は、PCのメモリーを消費させ、CPUが100%の使用となり、熱を持ち、PCに膨大な負荷をかけてしまうことになります。

まずは意図しない無限ループに陥らないように、プログラムをしっかり確認しましょう。
また、脱出する方法も用意しておきましょう。

まとめ:無限ループ while True

繰り返し

まとめ:無限ループ while True

無限ループには「無限ループを活用する」ことと「無限ループに陥る」というものがあるということを解説しました。

まとめると、Pythonでは「while True:」を書くということは、無限ループにさせるということになります。
無限ループを活用するためには、コードが先に進めなくなるため、ループから抜ける「break」などと必ずセットで使うということを覚えておいてください。

また、Pythonのブール値、「True」と「False」の判定についても確認しておいてください。
Python データ型の変換について!」を参照してください。

これから、Pythonの無限ループを上手に使いこなしてください。

よかったらシェアしてください!
目次