繰り返し
繰り返しとは
繰り返し処理(ループ処理)は、基本三構造の1つで、ある処理を何度も繰り返し実行することをいいます。
- 1 から 10 までの数字を順に表示する
- 価格 x 個数の合計を何度も計算する
繰り返し処理のフロー
繰り返し処理をフローにすると以下のようになります。
iterableとは
iterableとは、繰り返し可能なオブジェクト(リスト、タプル、文字列など)のことで、index(インデックス)とvalue(値)を返します。

for-in
for-in文とは
for-in文は、iterableオブジェクトの要素を繰り返し処理できます。
for 要素 in イテラブルオブジェクト:
# イテラブル内の要素に対する処理
ファイル構成
sample/
└── repeat.py
リストの繰り返し
リストデータを作成し、for-inで繰り返し表示します。
repeat.py
numbers = [1, 2, 3, 4, 5]
for number in numbers:
total += number
print(total)
- このプログラムはもっと簡単な処理方法があります
リスト「numbers」の値の合計値が表示できました。
結果
15
range()
range() は連続する整数のシーケンスをリストで生成します。
0からはじまる連続する整数
リスト = range(数値)
開始と終了を指定した連続する整数
リスト = range(開始, 終了)
ステップサイズを指定した整数
ステップサイズを指定すると、飛び数の連続数字を生成できます。
リスト = range(開始, 終了, ステップ数)
for-in文のネスト
for文をネストして処理します。例えば「3 x 3」の座標を表示すると以下のようになります。
repeat.py
for x in range(3):
for y in range(3):
plot = str(x) + "," + str(y)
print(plot)
結果
0-0
0-1
0-2
1-0
1-1
1-2
2-0
2-1
2-2
enumerate()
リストやタプルは、そのまま繰り返してもインデックスを取得できません。そこでenumerate() を利用すると、インデックスと値をペアで処理できます。
for インデックス, 値 in enumerate(iteratableオブジェクト):
# イテラブル内の要素に対する処理
enumerate()の基本
リスト「drinks」を enumerate() で変換し、for-in文で繰り返し処理します。
repeat.py
drinks = ["コーヒー", "紅茶", "ほうじ茶"]
for index, drink in enumerate(drinks):
message = str(index) + ":" + drink
print(message)
インデックスと値が表示できました。
結果
0:コーヒー
1:紅茶
2:ほうじ茶
while
while文とは
while文は条件式がTrueの間、ブロック内のコードを繰り返し実行します。条件式は処理をする前に判定するので前判定といいます。
while 条件式:
処理
0から10の間繰り返し
変数 i が「0」から「10」の間はずっと繰り返します。
repeat.py
count = 0
while count <= 10
count += 1
}
print(count)
結果
最終結果は「11」になります。
11
無限ループ
while文の繰り返しは処理を間違えると、半永久的に処理がされる無限ループになります。
無限ループの場合処理を止める
while文の中で何も処理しなかいと、ずっとループしてしまいます。
repeat.py
while True:
i += 1
print(i)
breakでループ終了
whileで条件分岐してbreakでループ処理を終了することができます。
while 条件1:
if 条件2:
break
breakの例
repeat.py
count = 0
while True:
count += 1
if (count == 5):
print("finished!")
break
print(count)
変数「count」が「5」になったら、ループが終了しました。
結果
finished!
5
while-else文
whileループがFalseになると、elseブロックが実行されます。breakでループを抜けない限り、elseブロックは実行されます。
count = 0
while count < 5:
print("Count:", count)
count += 1
else:
print("finished!")
Count: 0
Count: 1
Count: 2
Count: 3
Count: 4
finished!
演習
問題1
リスト「items」を繰り返す処理で、【A】【B】に当てはまるのはどれですか?
- 【A】for【B】items 【C】item
- 【A】for【B】item 【C】items
- 【A】items【B】for 【C】item
- 【A】item【B】for 【C】items
items = ["PC", "TV", "エアコン"]
【A】 【B】 in 【C】:
print(item)
問題2
リスト「items」を繰り返す処理で、【A】【B】に当てはまるのはどれですか?
- 【A】item【B】items 【C】index
- 【A】item【B】index 【C】items
- 【A】index【B】items 【C】item
- 【A】index【B】item 【C】items
items = ["PC", "TV", "エアコン"]
for 【A】,【B】 in 【C】:
print(index)
print(item)
問題3
9 x 9 のかけ算の答えを、段ごとに表示してみましょう。
結果
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
ヒント
改行しないようにするには、print() の end で空の文字などを設定します。
print(値, end="")
問題4
以下のように 5 x 5 の表に「○」「●」をランダムに表示してみましょう。
|⚪︎︎|⚫︎|⚫︎|⚫︎|⚪︎︎|
|⚫︎|⚫︎|⚪︎︎|⚪︎︎|⚫︎|
|⚫︎|⚫︎|⚪︎︎|⚫︎|⚫︎|
|⚫︎|⚪︎︎|⚪︎︎|⚫︎|⚫︎|
|⚪︎︎|⚫︎|⚫︎|⚫︎|⚪︎︎|