初心者のためのpython入門

自分がつまづいたところやつまづきやすいところを中心に書いていきます。また、役に立つライブラリの紹介などをしていきます。

繰り返し「while」

繰り返し「while」

繰り返しは、条件が成立する限り同じブロックを実行します。下に繰り返しの簡単なフローチャートを載せてあります。

f:id:tiginkgo:20171206231602p:plain:w300

繰り返しの書き方

単純な繰り返し

まずはサンプルプログラムを見ましょう。インデントは空白4つです。

>>> time = 10
>>> while time > 0:
...     time -= 2
...     print('sleep')
...     print('get up')
... 
sleep
get up
sleep
get up
sleep
get up
sleep
get up
sleep
get up
  1. 「while」という命令を使うことによって「繰り返し」を行うことができます。
  2. 「while」の後ろには「time > 0」のように繰り返しの条件を書きます。
  3. 繰り返しの条件がTrueなら、while以下のブロック(インデントされた部分)の中身が実行されます。
  4. 繰り返しの条件がFalseなら、繰り返しを終えてブロックを抜けます。

今回は、条件判定で5回Trueとなるので5回の繰り返しが行われました。

繰り返しの繰り返し

分岐の時もそうでしたが、繰り返しの中で繰り返しを使うこともできます。

>>> i = 9
>>> j = 9
>>> while i > 0:
...         while j > 0:
...             print("%3d" % (i*j), end='')
...             j -= 1
...         print()
...         j = 9
...         i -= 1
 81 72 63 54 45 36 27 18  9
 72 64 56 48 40 32 24 16  8
 63 56 49 42 35 28 21 14  7
 54 48 42 36 30 24 18 12  6
 45 40 35 30 25 20 15 10  5
 36 32 28 24 20 16 12  8  4
 27 24 21 18 15 12  9  6  3
 18 16 14 12 10  8  6  4  2
  9  8  7  6  5  4  3  2  1

繰り返しの中で繰り返しを行うことによって九九表ができました。このように繰り返しの繰り返しを2重ループ、繰り返しの繰り返しの繰り返しなら3重ループと呼んだりします。print()関数はendを指定することによって終了文字を好きな文字にすることができます。デフォルトでは改行('\n')になっています。

BREAK

繰り返しの途中で条件によっては繰り返しを止めたい場合があると思います。そのようなときに使うのが「break」です。

>>> i = 10
>>> while i > 0:
...     print(i)
...     i -= 1
...     if i < 5:
...         break
... 
10
9
8
7
6
5

見て分かるようにif文のブロックが実行された後にwhileループから抜けています。このようにif文とbreak文を使うことによって柔軟にループを扱うことができます。

CONTINUE

繰り返しの途中でループを抜けれなら、繰り返しの途中でループの先頭に戻ることもできるものです。そこで使うのが「continue」です。

>>> i = 9
>>> while i > 0:
...     i -= 1
...     if i % 2 != 0:
...         continue
...     print(i)
... 
8
6
4
2
0

continueを使うことによって、偶数だけを出力しました。 continueは書く場所を間違えてしまうと無限ループになることがあるので気をつけてください。無限ループとは、永遠に終わらないループです。無限ループになったら「ctrl+C」を押しましょう。処理を止めることができます。

True・Falseとは

制御構造を扱う上でTrueとFalseの定義は見逃せません。PythonにおけるTrue・Falseはどのように定義されているのでしょうか。偽は必ずしも明示的にFalseであるわけではありません。しかし、Falseになるものはある程度限られているので、Falseとみなされるもので重要なものをなんとなく覚えておきましょう。それ以外は全てTrueになると考えても差し支えないでしょう。

Falseとみなされるもの
ブール値 False
null None
整数のゼロ 0
小数のゼロ 0.0
空文字列 ''
空リスト []
空タプル ()
空辞書 {}
空集合 set()