繰り返し処理#

複数の処理を繰り返し行うには,while文やfor文といった文を使います.今回はこれらの使い方を学びましょう.

while文による繰り返し処理#

while文は繰り返し処理を行うために用います.使い方は以下の通り:

while 条件:
    処理

ここで,「条件」がTrueの間,while文は「処理」を繰り返します.条件は等式や不等式などの,TrueやFalseを返す式を書くと良いでしょう.例えば:

i = 0
while i < 10:
    print("iの値は", i, "です")
    i = i+1 # i+=1 でも同じです.
iの値は 0 です
iの値は 1 です
iの値は 2 です
iの値は 3 です
iの値は 4 です
iの値は 5 です
iの値は 6 です
iの値は 7 です
iの値は 8 です
iの値は 9 です

ここでは「i<10 (iは10未満である)」が正しい(True)間,whileブロックの処理が実行されています.
iの値はコードブロックの一番最後で更新されており,一度の処理ごとに値が1増えています.
10回目の処理の後でiの値は10に到達し,「i<10 (iは10未満である)」が間違い(False)になり,ループ処理が終了しました.

[問題1] 以下の条件に合うプログラムを作成して実行して下さい.#

i=0が与えられたとき,while文を使って,ループの中でiに1づつ値を足していきます.iの値が奇数の場合はprint("i=",i,"(iは奇数)",)を実行し,偶数の場合はprint("i=",i,"(iは偶数)",)を実行するプログラムを作成して下さい.また,この繰り返し処理はiの値が20と等しくなった時に終了します.

print("i=",i,"(iは奇数)")
print("i=",i,"(iは偶数)")
i = 0

# iの値が20と等しくなるまで奇数/偶数判定を行い続ける
Hide code cell source
i = 0

# iの値が20と等しくなるまで奇数/偶数判定を行い続ける
while i!=20:
    if i % 2 == 0:
        print("i=",i,"(iは偶数)")
    else:
        print("i=",i,"(iは奇数)")
    i+=1

print("-----------")
# または
i = 0
while i!=20:
    if i % 2 == 0:
        print("i=",i,"(iは偶数)")
        i+=1
        continue
    print("i=",i,"(iは奇数)")
    i+=1
i= 0 (iは偶数)
i= 1 (iは奇数)
i= 2 (iは偶数)
i= 3 (iは奇数)
i= 4 (iは偶数)
i= 5 (iは奇数)
i= 6 (iは偶数)
i= 7 (iは奇数)
i= 8 (iは偶数)
i= 9 (iは奇数)
i= 10 (iは偶数)
i= 11 (iは奇数)
i= 12 (iは偶数)
i= 13 (iは奇数)
i= 14 (iは偶数)
i= 15 (iは奇数)
i= 16 (iは偶数)
i= 17 (iは奇数)
i= 18 (iは偶数)
i= 19 (iは奇数)
-----------
i= 0 (iは偶数)
i= 1 (iは奇数)
i= 2 (iは偶数)
i= 3 (iは奇数)
i= 4 (iは偶数)
i= 5 (iは奇数)
i= 6 (iは偶数)
i= 7 (iは奇数)
i= 8 (iは偶数)
i= 9 (iは奇数)
i= 10 (iは偶数)
i= 11 (iは奇数)
i= 12 (iは偶数)
i= 13 (iは奇数)
i= 14 (iは偶数)
i= 15 (iは奇数)
i= 16 (iは偶数)
i= 17 (iは奇数)
i= 18 (iは偶数)
i= 19 (iは奇数)

breakを使って繰り返し処理を抜ける#

breakはwhileや後述するforのような繰り返し処理の中でのみ利用できる構文です.Pythonがbreak文を評価すると,whileやforを終了させます.最初の例を使ってbreakの挙動を確認しましょう.

まずは何の条件も敷かずに,breakを書いてみます.

i = 0
while i < 10:
    print("iの値は", i, "です")
    i = i+1 # i+=1 でも同じです.
    break
iの値は 0 です

するとループ処理の1回目でwhileブロックから抜けたことがわかると思います.では次に,iの値が4になったらループから抜けるように,プログラムを修正してみます.

i = 0
while i < 10:
    print("iの値は", i, "です")
    i = i+1 # i+=1 でも同じです.
    if i == 4:
        break
iの値は 0 です
iの値は 1 です
iの値は 2 です
iの値は 3 です

このようにbreakはif文と共に利用することが多いです.while文を使ったこの例ではあまり有用性が見出せないかもしれませんが,for文では力を発揮します.

[問題2]完全数を見つけたときにbreakするように,問題1のプログラムを修正して下さい.#

ヒント:古来から「6、28、496、8128」が完全数であることが知られています.これ以外にもありますが,ここでは「6か28」であればbreakするように条件式を書いてみて下さい.

繰り返し処理:for文#

forによる繰り返し処理#

for文はwhile文のように繰り返し処理を行うための構文です.使い方は以下の通り:


for 仮変数 in シーケンシャル:
    処理

ここでいうシーケンシャルとは,複数の要素がまとまったデータ型のことを言います.今はひとまず忘れて,range関数で代用することにしましょう.range関数を使うと,以下のような動作をさせることができます.

for i in range(0,10):
    print(i)
0
1
2
3
4
5
6
7
8
9

range(0,10)は0からスタートして,10の一つ前までの数字を生成します.スタート地点が0であるならば,第一引数は省略してrange(10)としても同様です.

for文は複数の要素に対して何かしらの処理を適用する際に非常に便利なので,これから多用します.もちろんbreakも使うことができるので,試してみて下さい.