データを読み込み中...

この教材では、プログラムで「繰り返し処理」を行う方法を学びます。同じ処理を何度も実行したいとき、ループを使うことで効率的にプログラムを書くことができます。
日常生活でも、同じ作業を繰り返すことはよくあります。
プログラミングでも同じように、同じ処理を何度も実行したい場面があります。例えば、次のようなプログラムを考えてみましょう。
# 1から5まで表示する(繰り返しを使わない場合)
print(1)
print(2)
print(3)
print(4)
print(5)
これでも動作はしますが、もし1から100まで表示したい場合、100行も書く必要があります。
これは非効率ですし、間違いも起こりやすくなります。
繰り返し処理(ループ)を使えば、このような処理を簡潔に書くことができます。
Pythonには主に2種類の繰り返し処理があります。
まずはfor文から見ていきましょう。
for文は、指定した回数だけ処理を繰り返します。基本的な構文は以下の通りです。
for 変数 in 範囲:
# 繰り返し実行される処理
実際の例を見てみましょう。
for i in range(5):
print(i)
実行結果
0
1
2
3
4
このプログラムは、iという変数に0から4までの数字を順番に入れながら、print(i)を5回繰り返します。
我々が数字を数えるとき、ほとんどの場合1から数え始めますが、プログラムは0から数え始めることを覚えておきましょう。
range()は、数字の範囲を生成する関数です。for文と組み合わせてよく使います。
range()の3つの使い方
# 1. range(終了値) - 0から始まる
for i in range(5):
print(i) # 0, 1, 2, 3, 4
# 2. range(開始値, 終了値) - 開始値から始まる
for i in range(1, 6):
print(i) # 1, 2, 3, 4, 5
# 3. range(開始値, 終了値, ステップ) - 増加量を指定
for i in range(0, 10, 2):
print(i) # 0, 2, 4, 6, 8
重要なポイント
range(5)は0から4まで)例1: 1から10までの合計を計算
total = 0
for i in range(1, 11): # 1から10まで
total += i
print("{}までの合計: {}".format(i, total))
print("最終合計: {}".format(total))
実行結果
1までの合計: 1
2までの合計: 3
3までの合計: 6
4までの合計: 10
5までの合計: 15
6までの合計: 21
7までの合計: 28
8までの合計: 36
9までの合計: 45
10までの合計: 55
最終合計: 55
例2: 九九の表を表示
number = 7
for i in range(1, 10):
result = number * i
print("{} × {} = {}".format(number, i, result))
実行結果
7 × 1 = 7
7 × 2 = 14
7 × 3 = 21
7 × 4 = 28
7 × 5 = 35
7 × 6 = 42
7 × 7 = 49
7 × 8 = 56
7 × 9 = 63
for文の中でif文を使うこともできます。
# 1から20までの偶数だけを表示
for i in range(1, 21):
if i % 2 == 0:
print(i)
実行結果
2
4
6
8
10
12
14
16
18
20
while文は、条件がTrueである間、処理を繰り返します。
while 条件式:
# 条件がTrueの間、繰り返し実行される処理
実際の例を見てみましょう。
count = 1
while count <= 5:
print("カウント: {}".format(count))
count += 1
print("ループ終了")
実行結果
カウント: 1
カウント: 2
カウント: 3
カウント: 4
カウント: 5
ループ終了
このプログラムの動作
countが1からスタートcount <= 5がTrueなので、処理を実行count += 1でcountを1増やすcountが6になったとき、count <= 5はFalseになり、ループ終了例1: ユーザーが正しい値を入力するまで繰り返す
password = ""
while password != "python":
password = input("パスワードを入力してください: ")
if password != "python":
print("パスワードが違います")
print("ログイン成功!")
このプログラムは、正しいパスワードが入力されるまで繰り返し入力を求めます。
例2: カウントダウンタイマー
time = 5
print("カウントダウン開始!")
while time > 0:
print(time)
time -= 1
print("発射!")
実行結果
カウントダウン開始!
5
4
3
2
1
発射!
while文を使う際に注意しなければいけないのが「無限ループ」です。条件が永遠にTrueのままだと、プログラムが終わらなくなってしまいます。
# 危険な例:無限ループ
count = 1
while count <= 5:
print(count)
# count += 1 を忘れている!
このプログラムは、countが1のまま変わらないため、永遠に「1」を表示し続けます。
Ctrl + Cを入力することで強制的に終了することができますが、強制終了させないといけないプログラムは良いプログラムとは言えません。
制御構文を使う場合は、この無限ループが起こらないかどうか注意しましょう。
無限ループを回避する方法
breakは、ループを途中で終了させるための命令です。
# 1から10まで数えるが、5で止める
for i in range(1, 11):
if i == 5:
break # ループを抜ける
print(i)
print("ループ終了")
実行結果
1
2
3
4
ループ終了
実用例:検索処理
numbers = [3, 7, 2, 9, 5, 1, 8]
target = 9
for num in numbers:
if num == target:
print("{}が見つかりました!".format(target))
break
else:
print("{}は見つかりませんでした".format(target))
このように、目的の値が見つかったらそれ以上探す必要がないので、breakでループを抜けます。
continueは、その回のループ処理をスキップして、次のループに進みます。
# 1から10までの数字のうち、3の倍数以外を表示
for i in range(1, 11):
if i % 3 == 0:
continue # 3の倍数ならスキップ
print(i)
実行結果
1
2
4
5
7
8
10
breakとcontinueの違い
# breakの動作
print("=== breakの例 ===")
for i in range(1, 6):
if i == 3:
break
print(i)
# continueの動作
print("\n=== continueの例 ===")
for i in range(1, 6):
if i == 3:
continue
print(i)
実行結果
=== breakの例 ===
1
2
=== continueの例 ===
1
2
4
5
# 回数が決まっている例
for i in range(10):
print("{}回目の処理".format(i + 1))
# リストの各要素を処理する例
fruits = ["りんご", "バナナ", "オレンジ"]
for fruit in fruits:
print(fruit)
# 条件を満たすまで繰り返す例
total = 0
number = 1
while total < 100:
total += number
number += 1
print("合計が100を超えました: {}".format(total))
参考として、同じ処理をfor文とwhile文の両方で書いた例を見てみましょう。
# for文で1から5まで表示
print("=== for文 ===")
for i in range(1, 6):
print(i)
# while文で1から5まで表示
print("\n=== while文 ===")
i = 1
while i <= 5:
print(i)
i += 1
どちらも同じ結果になりますが、この場合はfor文の方が簡潔で読みやすいです。
以下の要件を満たすプログラムを作成してください。
要件
nに数値(例: 10)を代入するnまでの数字を順番に表示する期待する出力例
1
2
3
4
5
6
7
8
9
10
合計: 55
ヒント
以下の要件を満たすプログラムを作成してください。
要件
numberに1を代入するnumberが2倍されていき、100を超えるまで繰り返すnumberの値を表示する期待する出力例
1
2
4
8
16
32
64
100を超えました
ヒント
number <= 100の間繰り返しますnumber *= 2を実行します以下の要件を満たすプログラムを作成してください。
要件
期待する出力例
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
Fizz
16
17
Fizz
19
Buzz
...
ヒント
i % 3 == 0で3の倍数を判定できます以下の要件を満たすプログラムを作成してください。
要件
期待する出力例
数字を入力してください(終了は0): 5
5は奇数です
数字を入力してください(終了は0): 8
8は偶数です
数字を入力してください(終了は0): 3
3は奇数です
数字を入力してください(終了は0): 0
入力された数字の合計: 16
ヒント
number % 2 == 0で偶数を判定できますこの教材では、以下の内容を学習しました
次の教材では、リストとループを組み合わせて、より実践的なプログラミングを学びます。演習問題をしっかり解いて、ループ処理をマスターしましょう。