繰り返し

繰り返しとは

繰り返し処理(ループ処理)は、基本三構造の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】に当てはまるのはどれですか?

  1. 【A】for【B】items 【C】item
  2. 【A】for【B】item 【C】items
  3. 【A】items【B】for 【C】item
  4. 【A】item【B】for 【C】items
items = ["PC", "TV", "エアコン"]
【A】 【B】 in 【C】:
    print(item)

問題2

リスト「items」を繰り返す処理で、【A】【B】に当てはまるのはどれですか?

  1. 【A】item【B】items 【C】index
  2. 【A】item【B】index 【C】items
  3. 【A】index【B】items 【C】item
  4. 【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 の表に「○」「●」をランダムに表示してみましょう。

|⚪︎︎|⚫︎|⚫︎|⚫︎|⚪︎︎|
|⚫︎|⚫︎|⚪︎︎|⚪︎︎|⚫︎|
|⚫︎|⚫︎|⚪︎︎|⚫︎|⚫︎|
|⚫︎|⚪︎︎|⚪︎︎|⚫︎|⚫︎|
|⚪︎︎|⚫︎|⚫︎|⚫︎|⚪︎︎|

Python超入門