どーも Takeです。
この記事では、Python の 「while文」 をつかったループ文について解説します。
Python でコーディングする際、必ず取っていいほどループ文を書くことになります。
そんなときにこの記事を参考にぜひ while 文をマスターしていただければと思います。
- while 文の基本的な書き方
- ループ文を途中で抜ける方法(break)
- ループ文を途中でスキップし、次の処理を行う方法(continue)
- while文の条件を満たさないときは「 else 」で処理分岐できる!
- 無限ループの書き方
- 無限ループでやらかした時(俺の処理は終わらねえ~!!)
- do while 文の書き方(Python には do while文がありません...)
while 文の基本的な書き方
まずは基本的な書き方をご紹介します。
while 文は下記のように書くのが基本です。
1 2 |
while 条件式: 処理 |
while 文を書く場合、
- まず条件式をつくる
- 条件式を満たす場合の処理を書く
0 から 9 までの数字を表示させるソースコードです。
1 2 3 4 5 6 |
i = 0 while i < 10: print(i) i+=1 |
まず、変数i = 0 を定義し、i をループ文の中で print させつつインクリメント(1ずつ増やす、i+=1 の箇所)させています。
ループ文の条件式は「i < 10」であるため、「i が 10 より小さい数字の間、処理がループする(繰り返し実行される)」ということです。
実行結果は下記になります。
1 2 3 4 5 6 7 8 9 10 |
0 1 2 3 4 5 6 7 8 9 |
ここで注意がインクリメント忘れです。
これを忘れると「i」 がずっと0になり、while 条件式は i < 10 のため、無限ループしていまいます。
ループ文を途中で抜ける方法(break)
つぎにループを途中で抜ける方法(break文)について説明します。
たとえば下記のようなソースコードがあるとします。
1 2 3 4 5 6 7 8 9 10 |
i = 0 while i < 10: if i == 3: print("three") break print(i) i+=1 |
これは変数 i = 3 のときに「three」と表示させ処理を終了させることです。
break文は条件式「if」と組み合わせてことが多いですが、
「ある条件を満たした場合に処理を終了させたい!」というときには便利です。
ちなみに実行結果は下記のようになります。
1 2 3 4 |
0 1 2 three |
ループ文を途中でスキップし、次の処理を行う方法(continue)
つぎにループ文を途中でスキップし、次の処理を行う方法(continue)について説明します。
私はプログラミング初心者だった時、「continueがよくわからん」となっていました。
これは「continueがないとき、あるとき」で比較すると簡単に理解できます。
まず「continue がないとき」のソースコードがあるとします。
1 2 3 4 5 6 7 8 9 |
i = 0 while i < 10: if i == 3: print("three") print(i) i+=1 |
これは「i = 3」のときに「three」の表示させた場合の例です。
特に continue 処理をしてないので、実行結果は下記のようになります。
1 2 3 4 5 6 7 8 9 10 11 |
0 1 2 three 3 4 5 6 7 8 9 |
まず「continue があるとき」のソースコードがあるとします。
1 2 3 4 5 6 7 8 9 10 11 |
i = 0 while i < 10: if i == 3: print("three") i+=1 continue print(i) i+=1 |
これはさきほどの「continue がないとき」例に continue 処理を追加した場合の例です。
「i = 3」の条件を満たす場合、continue 処理を追加しているため、
continue 以下の処理はスキップされ、下記のように「3」を表示する処理がなくなります。
1 2 3 4 5 6 7 8 9 10 |
0 1 2 three 4 5 6 7 8 9 |
「continue」文を書く上での注意点として、無限ループにならないようにすることです。
例として示した 「continue」文はインクリメント(1ずつ増やす、i+=1 の箇所)より前に記載しているため、
「continue」文がインクリメント処理をスキップすると、変数「i」の値が変わらず、永遠にインクリメントされない場合があります。
while文の条件を満たさないときは「 else 」で処理分岐できる!
while 文が条件を満たさない場合、「else」で処理分岐もできます。
何言ってるかわからない方は下記をご覧ください。
1 2 3 4 5 6 7 8 |
i = 0 while i < 5: print(i) i+=1 else: print("終わり!") |
これは変数「i」が 0 ~ 5 の間で print で表示させる処理をしています。
この処理を抜ける、つまり i = 6になった場合、while 文を抜けループ処理が終了しますが、
その際に「else」をつかうことで「終わり!」と表示させるように処理を分岐しています。
このように「else」をつかうことで while 文の処理の終了時の処理分岐することができます。
無限ループの書き方
while 文で無限ループさせるためには、
下記のように「while True:」と書きます(True の「T」は大文字です)。
1 2 3 4 5 |
i = 0 while True: print(i) i+=1 |
※ 上記は無限ループするため、実行させる場合は注意してください!!
無限ループでやらかした時(俺の処理は終わらねえ~!!)
while 文で書き間違えたりして無限ループする場合があります。
1 2 3 4 5 |
i = 0 while True: print(i) i+=1 |
そのときはキーボード入力で下記コマンドを入力することで
処理を強制的に中断させることができます。
- Windows ・・・ Ctrl + C
- Mac ・・・ control + C
do while 文の書き方(Python には do while文がありません...)
「do while」文とは 「while」文とは若干異なる文法で、
「while」文は条件を満たす場合にループ処理しますが、
「do while」条件にかかわらず、必ず初回実行されます。
そのため、さまざまなプログラミング言語でつかわれることもありますが、
Python には「do while」文がありません。
ですので、どうしても「do while」を使いたい場合は下記のようにします。
- 必ず初回実行されるような条件式にする
- あえて無限ループにし、条件式で break 処理する
「必ず初回実行されるような条件式にする」は「そりゃそうやろ!」
ってなると思うので、「あえて無限ループにし、条件式で break 処理する」を説明します。
下記ソースコードをご覧ください。
1 2 3 4 5 6 7 8 9 |
i = 0 while True: print(i) i+=1 if i == 3: break |
「while True:」は無限ループの記述方法ですが、これがあるかぎり必ず一回目の処理は実行されます。
そして「if」文の条件式をつかい処理を「break(途中終了)」させることで Python 版の「do while」文を実行できます。
最後に
いかがでしたでしょうか?
この記事では while 文の処理についてまとめました。
ループ文は必ず Python のコーディングをする上で必要な知識です。
この記事を参考にぜひ while 文をマスターできれば幸いです。
ではでは。