python_learn

2-5:for・while文

前ページ(2-4:if文) | 目次へ戻る | 次ページ(2-6:データ型)


for文、while文は繰り返し処理を行う場合に使います。

例えば数字の0から9までの値を順番に表示する場合、毎回「print(0)、print(1)」のように記述するのは大変ですし面倒なので繰り返し処理を使います。

for文の書き方

その場合はfor文を使います。for文の書き方は以下の通りです。

for [変数] in [リスト, タプル, 文字列など]:
    [処理]

リストやタプルなどについては「2-6:データ型」のところで説明します。

先ほどの例のように数字の0から9を順番に表示させる方法は以下の通りです。

・2-05_01_for_example.py

for x in range(0, 10):
    print(x)

少し解説すると、「range(0, 10)」で0から最大値である10の-1までの値、つまり0から9まで持っているような形になります。

そのrangeが持っている値を一つ取り出して変数xに入れてそれをprint(x)で表示させています。

for文はそのrangeが持っている値を順番に取り出すという処理を「繰り返し」ています。

つまり以下のような動きになります。

また詳しくは「2-6:データ型」のところで説明しますが、for文のinの後にはリストなどを指定するとその値を取得することができます。

・2-05_02_for_example2.py

num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for x in num_list:
    print(x)

while文の書き方

繰り返し処理を記述方法としてfor文の他にwhile文があります。

while文の書き方は以下の通りです。

while [ループ条件]:
    [処理]

while文に入る前に「ループ条件」の判定が行われ、判定結果がTrueであれば処理の部分が実行されます。そしてその処理が終了したら再度「ループ条件」の判定が行われるという形で繰り返しています。

ループ条件の判定でFalseとなった場合は処理は行われず繰り返し処理から抜けます。

for文の時と同じように0から9までの数字を順番に表示する場合は以下のようになります。

・2-05_03_while_example.py

x = 0

while x < 10:
    print(x)
    x = x + 1

このwhile文は以下のような動きになります。

繰り返しを途中で終了させる

for文、while文とも途中で繰り返しを終了させたい場合があります。

その場合は以下のようにif文で条件判断した後に「break」と記述します。

# for文の場合
for [変数] in [リスト, タプル, 文字列など]:
    if [終了条件]:
        break

# while文の場合
while [ループ条件]:
    if [終了条件]:
        break

例えば0から9の数字を繰り返していた時に「5」になったら終了という場合は以下のように記述します。

・2-05_04_break_example.py

# for文の場合
for x in range(0, 10):
    print(x)

    if x == 5:
        break

print("-----------")

# while文の場合
count = 0

while count < 10:
    print(count)

    if count == 5:
        break
    count = count + 1

特定条件の場合処理をスキップする

繰り返しの途中で特定の条件の場合に処理をスキップさせたい場合があります。

その場合は以下のようにif文で条件判断した後に「continue」と記述します。

# for文の場合
for [変数] in [リストタプル文字列など]:
    if [スキップ条件]:
        continue

# while文の場合
while [ループ条件]:
    if [スキップ条件]:
        continue

例えば0から9の数字で奇数のみ表示するという場合は以下のように記述します。

・2-05_05_continue_example.py

# for文の場合
for x in range(0, 10):
    if x % 2 == 0:
         # 2で割った余りが0、つまり偶数の場合にcontinue
        continue
    print(x)

print("-----------")

# while文の場合
count = -1

while count < 10:
    count = count + 1
    if count % 2 == 0:
        # 2で割った余りが0、つまり偶数の場合にcontinue
        continue
    print(count)

練習問題

以下のすべての条件を満たす処理をPythonで書いてみてください。

ちなみに以下の数が表示されていれば正解です。

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
解答例 ・2-05_06_for_while_practice.py
# 解答例ではwhileとforを両方使っていますが
# どちらか一方だけの書き方でも答えが求められれば良いです。
count = 2

while count <= 100:
    prime_flg = True # 素数かどうかの判断結果変数

    for y in range(2, count):
        # 割り切れたら素数ではない
        if count % y == 0:
            prime_flg = False
            break

    if prime_flg:
        print(count) # 素数であれば表示

    count = count + 1

前ページ(2-4:if文) | 目次へ戻る | 次ページ(2-6:データ型)