3-2

繰り返し

for文による繰り返し

for 文は、リストや文字列などのイテラブル(繰り返し可能なオブジェクト)の各要素に対して処理を繰り返します。

python
# リストのループfor x in [1, 2, 3, 4, 5]:    print(x)# 文字列のループfor ch in "Python":    print(ch)  # P, y, t, h, o, n
for文の動き:リストの各要素を順に処理12345x=3print(x)現在の要素を処理次の要素へ進む出力: 1 2 3 4 5

range

range() を使うと、整数の連続した値を生成できます。

python
range(5)       # 0, 1, 2, 3, 4range(1, 6)    # 1, 2, 3, 4, 5range(0, 10, 2)  # 0, 2, 4, 6, 8(ステップ2)range(10, 0, -1) # 10, 9, 8, ..., 1(逆順)
python
# 1から10まで合計total = 0for i in range(1, 11):    total += itotal   # 55

リストに変換

python
list(range(5))        # [0, 1, 2, 3, 4]list(range(1, 6))     # [1, 2, 3, 4, 5]list(range(0, 10, 2)) # [0, 2, 4, 6, 8]

for文の入れ子

for 文の中に for 文を入れることができます(ネスト)。

python
# 九九の表for i in range(1, 4):    for j in range(1, 4):        print(f"{i} × {j} = {i*j}")
python
# 2次元リストの操作matrix = [    [1, 2, 3],    [4, 5, 6],    [7, 8, 9]]for row in matrix:    for elem in row:        print(elem, end=" ")    print()  # 改行

enumerate

enumerate() を使うと、インデックスと要素を同時に取得できます。

python
fruits = ["apple", "banana", "cherry"]for i, fruit in enumerate(fruits):    print(f"{i}: {fruit}")# 0: apple# 1: banana# 2: cherry# 開始番号を指定for i, fruit in enumerate(fruits, start=1):    print(f"{i}. {fruit}")# 1. apple# 2. banana# 3. cherry

zip

複数のリストを同時にループするには zip() を使います。

python
names = ["田中", "鈴木", "佐藤"]scores = [85, 92, 78]for name, score in zip(names, scores):    print(f"{name}: {score}点")# 田中: 85点# 鈴木: 92点# 佐藤: 78点

while文による繰り返し

while 文は、条件が True の間、処理を繰り返します。

python
# カウントアップn = 0while n < 5:    print(n)    n += 1# 0, 1, 2, 3, 4

無限ループに注意

python
# 無限ループの例(実行しないこと)while True:    print("永遠に繰り返す...")  # Ctrl+C で停止

break文・continue文

break

break は、ループを途中で終了します。

python
# 最初の偶数を見つけたら終了nums = [1, 3, 7, 4, 9, 2]for n in nums:    if n % 2 == 0:        print(f"最初の偶数: {n}")        break# 最初の偶数: 4

continue

continue は、現在の反復をスキップして次の反復に進みます。

python
# 奇数だけを表示for i in range(10):    if i % 2 == 0:        continue   # 偶数はスキップ    print(i)       # 1, 3, 5, 7, 9

while と break の組み合わせ

python
# ユーザー入力をシミュレートdata = ["yes", "no", "maybe", "yes"]idx = 0while True:    answer = data[idx]    idx += 1    if answer == "yes":        print("Yesと答えました!")        break# Yesと答えました!

練習: 素数判定

標準

整数 n が素数かどうかを返す関数 is_prime(n) を定義してください。

練習: フィボナッチ数列

標準

フィボナッチ数列の最初の n 項をリストで返す関数 fibonacci(n) を定義してください。

F0=0,F1=1,Fn=Fn1+Fn2F_0 = 0,\quad F_1 = 1,\quad F_n = F_{n-1} + F_{n-2}