Py初めてのPython

Day 2条件分岐・ループ(判断と繰り返し)

forとrangeで繰り返す

決まった回数・要素ぶんの繰り返しを for で書き、range の使い方を理解する。

同じ処理を何度も書かない

「1から5まで表示する」ために print を5回書くのは非効率で、回数が変われば全部書き直しになります。こういう「繰り返し」を1つの命令で表すのが for(フォー)文です。ループ(loop、繰り返し)とも呼びます。

手で5回書く(繰り返しに弱い)

PYTHON
print(1)
print(2)
print(3)
print(4)
print(5)

forで1回書く

PYTHON
for i in range(1, 6):
    print(i)

range(レンジ、範囲)は「連続した数の並び」を作る道具です。range(1, 6) は「1 から始めて 6 の手前まで」、つまり 1, 2, 3, 4, 5 を意味します。終わりの数は含まれない(6は入らない)のがポイントです。i(アイ)は繰り返しのたびに順番に値が入る変数で、名前は自由ですが慣習的に i がよく使われます。

range は「終わりを含まない」

range(5) は 0, 1, 2, 3, 4 の5個で、5 は含まれません。初心者が最も戸惑う点です。『5回繰り返したい』なら range(5)、『1から5を出したい』なら range(1, 6) と、目的に合わせて使い分けます。

回数だけ繰り返す vs 要素を順に処理する

for は数だけでなく、リスト(複数の値をまとめた入れ物。Day3で詳しく学びます)の中身を1つずつ取り出すのにも使えます。むしろこちらが for の本来の姿です。range は「回数ぶんの繰り返し」を作るための一種の道具に過ぎません。

PYTHON
fruits = ["りんご", "みかん", "ぶどう"]

for fruit in fruits:
    print(fruit + "を数えました")
リストの要素を先頭から1つずつ取り出して処理する

なぜ for を使うと良いのか

繰り返しを for にまとめると、対象が3個でも1000個でも同じコードで動きます。手で書き並べると、要素が増えたときに全部書き直しになり、書き漏れや順序ミスも起きます。『変わる部分(データ)』と『変わらない部分(処理)』を分けられるのがループの価値です。

PYTHON
total = 0
for n in range(1, 11):
    total = total + n
print(total)  # 1から10までの合計 55
繰り返しながら合計を積み上げる典型パターン

この例では total という「入れ物」を最初に 0 にしておき、ループのたびに n を足し込んでいます。ループの外で初期化し、ループの中で更新する、という形は合計・件数・最大値などを求めるときの定番です。total = total + n は total += n と短く書くこともできます。

AIにはこう聞く

ループの中で数がどう変化するか追えないときは、『この for ループを1周ごとに i と total の値を表にして見せて』とAIに頼むと、頭の中の実行を代わりにトレースしてくれます。表を見て自分の予想と合っているか確かめるのが、繰り返しを読む練習になります。

読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

range(2, 6) が表す数の並びはどれですか。

Q2

「ちょうど3回だけ処理を繰り返したい」とき、最も適切な書き方はどれですか。

Q3

for ループを使うと、同じ処理を手で並べて書くのに比べて何が良いのかを説明してください。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。