PYTHON はじめの一歩 / LESSON 06

forで何度も試そう。

ROBORONが果物を1個ずつ調べるなら、同じ命令を何回も書かずに済みます。for と range を使ってみよう。

学びを始める

同じ仕事は、ループに任せよう。 | 動画なしでも学べます

forで何度も試そう。をあおい・はる・AI先生・ROBORONと考えるイラスト
同じ仕事は、ループに任せよう。
GOAL

この回でできるようになること

  • 01for でリストの要素を順番に扱う
  • 02range() の終わりが含まれない理由を説明できる
  • 03enumerate() とリスト内包表記の入口を知る
ことばの窓
01 / EXPLORE

1個ずつ、順番に

for fruit in fruits: は、リストから1個ずつ取り出して処理します。字下げした行を、要素の個数だけ繰り返します。

あおい

果物が100個だったら、printを100回書くの?

AI先生

for なら1回の書き方で済むんだよ。fruit に1個ずつ入る様子を見ようね。

はる

繰り返す間は同じ命令でも、fruit の値だけ変わります。

実際のコードまず結果を予想してみよう
fruits = ["リンゴ", "バナナ", "みかん"]
for fruit in fruits:
    print(fruit, "を確認")
実行するとリンゴを確認 / バナナを確認 / みかんを確認

なぜ? 1周目はリンゴ、2周目はバナナ、3周目はみかん。リストが終わるとループも止まります。

目で見てわかる1個ずつ、順番に
図6-1 同じ処理を3回、違う値で実行します。
図6-1 同じ処理を3回、違う値で実行します。
ROBORONのチェック!

for の次の行も、半角スペース4個の字下げが必要だよ。

02 / EXPLORE

回数を決めて繰り返す

range(3) が作るのは0、1、2。終わりの3は含まれません。開始と刻み幅も指定できます。

あおい

0から10まで表示したいのに range(10) だと9で止まる!

AI先生

そうなんだよ。10も含めるなら range(11)。終了位置は『ここに着く前に止まる』という目印なんだ。

はる

偶数なら range(2, 11, 2) で2、4、6、8、10です。

実際のコードまず結果を予想してみよう
for n in range(3):
    print(n)
print("偶数:")
for n in range(2, 11, 2):
    print(n)
実行すると0 / 1 / 2、続けて2 / 4 / 6 / 8 / 10

なぜ? range(開始, 終了, 刻み幅)。終了の値は含まれないため、10までなら終了は11です。

目で見てわかる回数を決めて繰り返す
図6-2 終点のひとつ手前で止まります。
図6-2 終点のひとつ手前で止まります。
ROBORONのチェック!

range は必要な数を順に生成する道具。list(range(3)) とすると一覧で見られるよ。

03 / EXPLORE

番号もほしいとき

enumerate() を使うと、位置番号と中身を同時に受け取れます。リスト内包表記は、繰り返しで新しいリストを作る短い書き方です。

あおい

『1番 リンゴ』って表示したいけど、番号を数える変数もいる?

AI先生

enumerate() が番号を付けてくれるよ。画面では1番からにしたいなら start=1 を使うんだ。

はる

新しいリストを作るだけなら [n * 2 for n in ...] も便利ですね。

実際のコードまず結果を予想してみよう
fruits = ["リンゴ", "バナナ"]
for number, fruit in enumerate(fruits, start=1):
    print(number, fruit)
doubled = [n * 2 for n in range(3)]
print(doubled)
実行すると1 リンゴ / 2 バナナ / [0, 2, 4]

なぜ? enumerate は番号と値の組を返します。内包表記は range(3) の0、1、2を2倍して新しいリストにします。

目で見てわかる番号もほしいとき
図6-3 番号付きの巡回と、新しいリスト作り。
図6-3 番号付きの巡回と、新しいリスト作り。
ROBORONのチェック!

短い書き方が読みづらいときは、普通の for と append() で書いて大丈夫。

04 / YOUR TURN

予想して、理由まで確かめよう

答えを選んだら、説明を読んでから実行欄でも試してみよう。

チャレンジどれになるかな?

for n in range(2, 8, 2): で使われる n は?

答えを選ぶと理由が表示されます。

PUT IT TOGETHER

小さな練習:1から5まで足そう

for と range() を使い、1+2+3+4+5 の合計を表示しよう。

ヒント:合計を0から始め、range(1, 6) を巡ります。

解き方の一例と理由を見る
total = 0
for n in range(1, 6):
    total += n
print(total)

終了値6は含まれないので、1〜5を足して15です。

COFFEE BREAK

100枚の写真を調べるなら

あおい

1枚ずつ同じ検査をするの、ROBORONに任せたい!

AI先生

for が向いているね。ただし100枚を全部同じ条件で調べてよいかは別の問題。暗い写真や斜めの写真も混ぜて、結果を確かめようね。

はる

処理を自動化した後も、結果の確かめ方が重要なのですね。

05 / RUN PYTHON

自分の手で動かそう

例題を選び、結果を予想してから「実行する」を押そう。値を変えると、どの行が結果を決めるか見えてくるよ。

例題を選ぶ

書き換えて試せます。Tabキーは半角スペース4つ分です。

fruit の値が周回ごとに変わります。

この入力欄の使い方

コード内の input() に渡す値を1行ずつ書きます。input() がない例では空欄で大丈夫です。複数回呼ぶコードでは上から順に使います。

準備できました。

実行結果

実行すると、ここに結果を表示します。

Pythonは閲覧中の端末内で動作します。

AI先生からひとこと

同じ仕事は、ループに任せよう。 今日覚えた道具を、別の値でも試してみよう。自分で理由を説明できたら、とてもいい進歩なんだよ。