※この記事にはプロモーションが含まれています。

12. 繰り返し処理(While文)

図解!Python while True 無限ループの抜け方と使い方を解説!(if, break, continue, inputとの組合せなど)

更新日:

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

 
このwhile文の条件式にTrueを指定すると、無限にループが繰り返されます。
Python while True もしくはwhile 1 で記述する無限ループの意味、抜け方と使い方を解説(if, break, continue, return, inputとの組合せなど)

「はたしてこの無限ループから抜け出す方法はあるのでしょうか?」「このwhile Trueの無限ループは何に使うのでしょうか?」

 
このページでは、Pythonにおけるwhile文の様々な使い方の中でも、while Trueの無限ループの抜け方と使い方について、具体的な例も交えながら確認していきます。

 
無限ループ以外のwhile文の詳しい説明は、「図解!Python while文のループ処理を徹底解説!」を参照ください。

 

動画教材紹介私(清水 義孝)が作成したコース「Pythonによるビジネスに役立つWebスクレイピング」(Udemyへのリンク)が発売中!
発売数10,000万本突破を記念して、今だけ期間限定で87%オフの大セール中!

Pythonにおけるwhile文の記述方法

まずはwhile文の基本的な記述方法からおさらいしていきましょう。while文とは、for文と同様、繰り返し処理の1つです。

条件式を指定し、その条件式がTrueの間はWhile文のブロック内の処理が繰り返し実行されますが、条件式がFalseになった時にwhile文は終了します。

記述方法は以下のとおりです。
Python while True もしくはwhile 1 で記述する無限ループの意味、抜け方と使い方を解説(if, break, continue, return, inputとの組合せなど)
while文に含まれる処理は、インデント(字下げ)して記述します(通常、インデントには半角スペース4つが使われます。)。処理が複数行ある場合も、全てインデントします。

インデントが終わると、while文の一連の処理は終わります。また条件式の後には、必ず :(コロン)を付けてください。

 
for文とwhile文は同じ繰り返し処理ですが、次の点が異なります。

  • for文は回数を指定して、指定した回数分の繰り返し処理を行います。
  • 一方でwhile文は、条件を指定して、その条件がTrueの間は繰り返し処理を行い、Falseになれば繰り返し処理を抜けます。

for文の詳しい説明は、「図解!Python for ループ文の徹底解説」を参照ください。

 
 
それではwhile文の例を見ていきましょう。

 
変数iに0を初期値として代入し、while文の条件としてiが3未満を指定しています。そして、printでiの値を表示し、iに1を加算しています。

0
1
2

iが3になるまでは、指定された条件がTrueですので繰り返し処理を行う事になります。従ってprintで表示されるiの値は、0から2までになります。

 
この基本的な使い方を元に、while Trueの無限ループの使い方を詳しく確認していきます。

 
 

if + breakでwhile Trueの無限ループを抜ける方法

while文の繰り返し処理の途中で特定の条件を満たした場合、繰り返し処理を抜けたい時には、breakを使います。
Python while True もしくはwhile 1 で記述する無限ループの意味、抜け方と使い方を解説(if, break, continue, return, inputとの組合せなど)

 
 
変数aに0を代入し、while文でaに1を加算し、変数aの内容をprint()で出力しながら、10になるまで繰り返し処理をします。

 
この処理の途中、if文で変数aを3で割った余りが0、つまり3の倍数になった場合、処理を中止するようbreakを挿入します。

1
2

すると処理結果として、1、2と表示され、3になった時点でループを抜けていることがわかります。

 
 
上のコードの「while a < 10:」を、無限ループ「while True:」に変更するとどうでしょうか?無限ループも抜け出せるのでしょうか?

1
2

実行結果を確認すると、先ほどと同様、3になった時点でループを抜けているようです。これでif文とbreakを使うと無限ループを抜け出せることがわかりました。

 
他には無限ループを抜ける方法は無いのでしょうか?breakと同様にwhile文で使うcontinueはどうでしょうか?

 
 

動画教材紹介私(清水 義孝)が作成したコース「Pythonによるビジネスに役立つWebスクレイピング」(Udemyへのリンク)が発売中!
発売数10,000万本突破を記念して、今だけ期間限定で87%オフの大セール中!

if + continueでもwhile Trueの無限ループを抜け出せるか?

while文において、ある特定の条件を満たした場合、その要素の処理をスキップし、次の要素の処理へ移りたい時には、continueを使います。
 
Python while True もしくはwhile 1 で記述する無限ループの意味、抜け方と使い方を解説(if, break, continue, return, inputとの組合せなど)

 
 
先ほどのbreakと同じ例を使って、今度はcontinueの動作を確認していきましょう。

 
変数aに0を代入し、while文でaに1を加算し、変数aの内容をprint()で出力しながら、10になるまで繰り返し処理をします。

 
この処理の途中、if文で変数aを3で割った余りが0、つまり3の倍数になった場合、処理をスキップするようcontinueを挿入します。

1
2
4
5
7
8
10

すると処理結果として、1、2、4、5、7、8、10と表示され、3の倍数になった時点でprint()の処理がスキップされ、次の繰り返し処理に移っていることがわかります。

 
 
上のコードの「while a < 10:」を、無限ループ「while True:」に変更するとどうでしょうか?無限ループも抜け出せるのでしょうか?

1
2
4


36685
36686
36688

実行すると、完全に無限ループ地獄に陥ってしまったことがわかります。あれ~

 
 

while Trueによる無限ループとif + breakの使い方

ここからは無限ループの使い方を確認していきましょう。こんな無限ループですが、使い道があるんです!

 
他のプログラミング言語ではdo whileという構文があり、例えばC言語では以下のように記述します。
 
Python while True もしくはwhile 1 で記述する無限ループの意味、抜け方と使い方を解説(if, break, continue, return, inputとの組合せなど)
この構文では、処理は必ず1回は実行し、最後にwhile文の条件式で判定を行い、条件を満たしていれば、繰り返し処理を実行するというものです。

 
但し、Pythonではこのdo whileという構文が無く、必ず1回は処理を実行したい場合、while Trueとbreakを組み合わせるなど、別の方法を使って記述することになります。

 
Python while True もしくはwhile 1 で記述する無限ループの意味、抜け方と使い方を解説(if, break, continue, return, inputとの組合せなど)
while Trueとwhileの条件文にTrueを記述すると、条件が常にTrueになり、無限に繰り返し処理が続くことになります。そこで、実行したい処理に続けてif文とbreakを記述します。すると、if文の条件判定の前に処理があるので、必ず1回は実行されることになります。

 
例えば、次のようなwhile文があるとします。

aは0です。
aは1です。
aは2です。

ここでは、変数aが0から2まで処理が繰り返されています。ここで使われているprint、formatの詳しい説明は、「PythonにおけるPrint、Formatの使い方」を参照ください。

 
 
次に、変数aに代入する値を3に変更すると、while文の処理はスキップされ、処理結果には何も表示されません。

 
 
ここで、最低でも1回は処理を実行したい場合は、while Trueとif文を組み合わせて、次のように記述します。

aは3です。

すると、最初の1回は処理が実行され、その後にif文の条件である変数aが3以上になり、breakでwhileのループを抜けています。

 

ポイント

このようにして、最低限1回は処理をしたい場合、while Trueとif + breakを用いて、do whileの代わりとして利用することができます。

 
 

動画教材紹介私(清水 義孝)が作成したコース「Pythonによるビジネスに役立つWebスクレイピング」(Udemyへのリンク)が発売中!
発売数10,000万本突破を記念して、今だけ期間限定で87%オフの大セール中!

while Trueとinputで入力値が条件を満たすまで繰り返し

他の無限ループの使い方として、inputと組み合わせて、入力された値が条件を満たすまでループするということもできます。

 
次のコードでは、input()で文字の入力を促し、入力された値を変数nameに格納します。変数min_lengthには4を代入し、while文でnameにアルファベットが5文字以上入力されるまで繰り返し処理をします。

 
条件が満たされるまでwhileの中のinput()で入力を求められます。アルファベットが5文字以上入力されるとwhileの繰り返し処理が終わり、print()で入力結果を表示しています。

 
これを実行すると、次のinput()の処理で入力を求められます。ここでは、「test」と入力しました。

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

 
すると次の箇所で再度入力を求められます。ここではアルファベット5文字以上の入力条件を満たすまで処理が繰り返されます。ここでは「testtest」と入力しました。

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

 
そして、次のprint()が実行され、先ほどの入力内容が表示されました。

あなたは、testtest と入力しました。

 

ポイント

このようにして、while Trueとinputは特定の条件を満たす値が入力されるまで処理を繰り返したい時に利用することができます。

 
 
関連記事です。
whileについて、無限ループとbreak以外の詳しい説明はこちらをご覧ください。

 
 
Pythonに関する重要なトピック全般について学んでいきたいと考えておられる方には、次のリンクをお勧めします。
 

 
 
 
最後に...


Pythonの学習においては、実際に様々なプログラムを書いて試していくことが非常に重要です。Pythonについて、さらに詳しく学ばれたい方は、以下の私のUdemy講座をご検討いただければ幸いです。


Pythonを用いて世界中のWebサイトから自動的にデータ収集する方法を、基礎からていねいに学ぶことができます。Pythonを初めて学ばれた方も、最初に取り組みやすい内容になっています。


>> Pythonによるビジネスに役立つWebスクレイピング
発売数9,000本突破を記念して大セール中!期間限定になりますのでお早めに。
Pythonによるビジネスに役立つWebスクレイピング(BeautifulSoup、Selenium、Requests)講座の画面

既に9,000名以上の方に受講頂き、大変好評です。またコースに満足いただけない場合でも、30日返金保証があるので安心です。

期間限定の割引クーポンは、こちらから!
>> Pythonによるビジネスに役立つWebスクレイピング
   
   





-12. 繰り返し処理(While文)

Copyright© ビジPy , 2024 All Rights Reserved.