forとwhileでくり返す
range(5)は0、1、2、3、4を作ります。数は5つで、5は含まれません。
3行のループを実行して、totalが増えるのを見る
説明を読む前に、このプログラムをIDLEにコピーして実行しましょう。次に、リストを自分の数に変えて、もう一度実行します。
total = 0
for n in [3, 5, 2]:
total = total + n
print(n, total)
print("done", total)3 3
5 8
2 10
done 10for行は、リストの項目を1つずつ取ります。1回りするたびに、変数nは次の項目を指し、下のインデントされた行がその値で1回実行されます。インデントされた行を1回通ることを、反復と呼びます。最後の項目のあと、Pythonは、インデントされていない最初の行に進むので、「done」は最後に1回だけ出力されます。トレース表がパターンをはっきりさせます。
| 回 | n | その回のあとのtotal | 出力された内容 |
|---|---|---|---|
| (前) | 0 | ||
| 1 | 3 | 3 | 3 3 |
| 2 | 5 | 8 | 5 8 |
| 3 | 2 | 10 | 2 10 |
| (後) | 10 | done 10 |
変数totalは累積変数と呼ばれ、ループの前に0で始まり、毎回何かを集めます。total = total + nという行はとてもよくあるので、Pythonには短い形total += nがあります。数えるのも、count += 1で同じように働きます。
range()が数を作ってくれる
何かを決まった回数くり返すには、range()を使ってループします。range(5)は0、1、2、3、4を返します。0で始まり、スライスと同じく5の手前で止まります。range(1, 6)は1から5を返します。3つ目の数が歩幅を決め、range(0, 10, 2)は0から8の偶数を返します。韓国の子どもが全員、2年生で暗唱する7の段の九九は、2行のループです。
for i in range(1, 10):
print(7, "x", i, "=", 7 * i)7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63forループは文字列の文字を順にたどることもできるので、文字を数えるのが簡単です。
count = 0
for ch in "banana":
if ch == "a":
count += 1
print(count)3whileは、条件がTrueである限りくり返す
whileループには、たどるリストがありません。条件を調べ、Trueならインデントされた行を実行し、また調べることをくり返します。「合計が5万ウォンになるまで貯め続ける」のように、回数があらかじめわからない仕事に合います。ループの中で何かが条件を変えなければ、ループは終わりません。そうなったら、Ctrl+Cでプログラムを止めましょう。
saved = 0
weeks = 0
while saved < 50000:
saved += 12000
weeks += 1
print(weeks, saved)5 60000breakは、途中でもすぐにループを抜けます。探していて、見つけたらすぐ止められるときに便利です。下のループは、60未満の最初の点数で止まり、88は見ません。
for s in [72, 91, 55, 88]:
if s < 60:
print("first below 60:", s)
break
print("ok", s)ok 72
ok 91
first below 60: 55| for x in ... | 各項目について、インデントされた行を1回ずつ実行する |
| range(a, b) | aから、bは含まずにbの手前までの整数 |
| while | 条件がTrueの間くり返す |
| 累積変数 | 回をまたいで合計を集める変数 |
| += | total += nは、total = total + nの短縮形 |
| break | すぐにループを抜ける |
- このコードは何を出力しますか。
for i in range(3): print(i)0
1
21
2
30
1
2
33
- このコードは何を出力しますか。
total = 0 for n in range(1, 5): total += n print(total) - このコードは何を出力しますか。
print(list(range(0, 10, 3))) - このコードは何を出力しますか。
total = 0 for n in [1, 2, 3]: total += n print(total)61
3
61
2
30
1
3
- このコードは何を出力しますか。
count = 0 for ch in "seoul": if ch in "aeiou": count += 1 print(count) - このコードは何を出力しますか。
n = 1 while n < 20: n = n * 2 print(n) - このコードは何を出力しますか。
for s in [5, 8, 3, 9]: if s > 6: print(s) break - このコードはhiを何回出力しますか。
for i in range(2, 8): print("hi") - このコードは何を出力しますか。
word = "" for ch in "abc": word = ch + word print(word) - プログラムが1から100までの合計を出力するように、行を並べてください。出力
5050
- 「range(1, 10)は10まで行く。」 10の手前で止まるので、最後の値は9です。1から10なら、range(1, 11)と書きます。
- 「私のwhileループは問題ない。時間がかかるだけ。」 ループの中で何も条件を変えなければ、止まりません。条件の中の変数が毎回更新されているかを確かめ、暴走したループはCtrl+Cで止めましょう。
- 「printをループの中に置いても外に置いても変わらない。」 forの下にインデントされていれば毎回実行され、左端にあれば、ループのあとで1回実行されます。毎ステップが必要か、最終的な答えだけでよいかを決めましょう。
- for x in list:インデントされた行を、項目ごとに1回実行する。
- range(a, b)はbの手前で止まる。range(n)は0からn - 1。
- 累積変数はループの前に始まり、ループの中で増える。
- whileは条件がTrueの間くり返す。何かがそれを変えなければならない。
- breakはすぐにループを抜ける。
このコースの出典 (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
確認日: 2026-10-19