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の無限ループを上手に使いこなしてください。