【Python】かんたんなwhile文の書き方【入門第23回】
目次
while文とは?
こんにちは、narupoです。
今回はPythonのwhile文をやりたいと思います。
for
文もwhile
文と同じで、繰り返しの作業を自動化する文です。
このwhile
文もfor
文と同じループ文ですが、for
文とは少々変わっています。
しかし、while
文は思いのほか使用する場面が多いです。
この記事でwhile
文を身に付けておきましょう。
具体的には↓を見ていきます。
while文の書き方
無限ループの書き方
カウント変数による制御
break
continue
else
while文の書き方
while
文は↓のように書きます。
while 条件式:
実行内容
for
文と比べるとずいぶんシンプルだと思います。
まずwhile
と書いてそのあとに条件式を書きます。それからコロン(:
)を付けて、ループさせたい内容を書きます。
たとえば↓のようなコードはアリです。
:::python
while True:
print('にゃーん')
無限ループの書き方
先ほどのコードをもう一度見てみましょう。
:::python
while True:
print('にゃーん')
↑のコードを実行すると永遠に「にゃーん」と出力されます。
↑のコードを実行して、プログラムが止まらない状態になったら、あせらずにキーボードの左下の「Ctrl」キーと「C」キーを同時押ししてください。
そうすれば↓のようにKeyboardInterrupt
が発生してプログラムを終了できます。
にゃーん
にゃーん
にゃーん
にゃーん
にゃーん
^Cにゃーん
Traceback (most recent call last):
File "nyan.py", line 2, in <module>
print('にゃーん')
KeyboardInterrupt
こういう終了条件が無いループを無限ループといいます。
ずばり、while
文は無限ループを書くための文と言っても良いでしょう。
無限ループなんて何に使うんだ? という疑問があると思いますが、たとえばゲームなどは無限ループです。
ほかにもWebサーバーなど、長期的に生存するプログラムも中身は無限ループです。
このようにプログラミングでは無限ループを使う機会が思いのほか多いものです。
この無限ループを扱えるようになると、またひとつ作れるプログラムの種類が増えると言っていいでしょう。
みんな大好き無限ループ
カウント変数による制御
while
文を制御したい場合はカウント変数を使います。
たとえば↓のようにです。
:::python
i = 0
while i < 4:
print(i)
i += 1
↑の例ではまず最初にi
というカウント変数を初期化しています。
そしてwhile
文の条件式では「i < 4
」として、i
が4
以上ならループを終了するようにしています。
そしてwhile
文の中ではprint
でi
を出力して、そのあとにi
をインクリメント(1
増加)させています。
↑のコードの実行結果は↓のようになります。
0
1
2
3
この形のwhile
文もわりとよく使います。
この形を変形すればいろいろなwhile
文を書けます。
たとえばデクリメントしていくwhile
文や、
:::python
i = 4
while i > 0:
print(i)
i -= 1
2
以上増加していくカウント変数など。
:::python
i = 0
while i < 10:
print(i)
i += 2
for
文と違う点は、while
文ではカウント変数を自分で制御できる点です。
たとえばループ中にカウント変数を減算することも出来ます。
このへんはfor
文と違ってwhile
文の便利なところです。
break文
while
文でもfor
文と同じでbreak
文を使うことができます。
break
文はループから抜け出す命令です。
:::python
while True:
break
↑のコードは実行してもなにも出力されません。
ループに入った直後にbreak
しているからですね。
たとえばカウント変数i
をカウントしていくwhile
文があるとして、そのi
が2
以上になったらループから抜ける……としたい場合は↓のようにします。
:::python
i = 0
while i < 10:
if i >= 2:
break
print(i)
i += 1
↑のコードの実行結果は↓のようになります。
0
1
break
文はfor
文やwhile
文などのループ文で非常によく使うので、憶えておきましょう。
continue文
while
文でもfor
文と同様にcontinue
文を使えます。
continue
文はループをスキップする命令です。
:::python
i = 0
while i < 4:
i += 1
print('カウントォ!')
if i >= 3:
continue
print(i)
↑のコードの実行結果は↓のようになります。
カウントォ!
1
カウントォ!
2
カウントォ!
カウントォ!
i
が3
以上になったらcontinue
文が実行され、print(i)
がスキップされます。
else文
while
文でもfor
文と同様にelse
文が使えます。
else
文は、ループがbreak
などで終了せずに、最後まで完了したときに実行される命令です。
なので↓のコードは、
:::python
i = 0
while i < 4:
print(i)
i += 1
else:
print('おわりました')
↓のような出力になります。
0
1
2
3
おわりました
ループが完了しているのでelse
文が実行されています。
いっぽう、途中でbreak
した場合は↓、
:::python
i = 0
while i < 4:
if i >= 2:
break
print(i)
i += 1
else:
print('おわりました')
↓のような出力になります。
0
1
while
文の途中でbreak
しているので最後のelse
文は実行されません。
おわりに
while
文はfor
文ほど使いませんが、それでもよく使う文と言えます。
このwhile
文を知っておかないと、いざってときに困ります。
「この処理、for
文で実現できないんだけどどうすりゃいいんだ?!」
という時にwhile
文の存在を思い出してみてください。
次回に続きます。
また見てね