記事一覧へ戻る 本の順番で続きを読む

ループ処理 - for文とwhile文

Python3初級 | 2026/02/18 15:36

ループ処理

for文

シーケンス(リスト、タプル、文字列など)の要素を順番に処理します。

# リストのループ
fruits = ["りんご", "みかん", "ぶどう"]
for fruit in fruits:
    print(fruit)

# 文字列のループ
for char in "Python":
    print(char, end=" ")  # P y t h o n

range関数

# 0から4まで
for i in range(5):
    print(i)  # 0, 1, 2, 3, 4

# 2から7まで
for i in range(2, 8):
    print(i)  # 2, 3, 4, 5, 6, 7

# 0から9まで2刻み
for i in range(0, 10, 2):
    print(i)  # 0, 2, 4, 6, 8

# カウントダウン
for i in range(10, 0, -1):
    print(i)  # 10, 9, 8, ..., 1

enumerate(インデックス付きループ)

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

for i, fruit in enumerate(fruits):
    print(f"{i}: {fruit}")
# 0: りんご
# 1: みかん
# 2: ぶどう

# 開始番号を指定
for i, fruit in enumerate(fruits, start=1):
    print(f"{i}. {fruit}")

while文

条件がTrueの間ループを繰り返します。

count = 0
while count < 5:
    print(count)
    count += 1

break と continue

# break: ループを中断
for i in range(10):
    if i == 5:
        break
    print(i)  # 0, 1, 2, 3, 4

# continue: 次の反復へスキップ
for i in range(10):
    if i % 2 == 0:
        continue
    print(i)  # 1, 3, 5, 7, 9

for-else / while-else

ループが正常終了(breakされなかった)場合にelseブロックが実行されます。

# 素数判定
n = 17
for i in range(2, n):
    if n % i == 0:
        print(f"{n}は素数ではありません({i}で割り切れます)")
        break
else:
    print(f"{n}は素数です")

ネストされたループ

# 九九の表
for i in range(1, 10):
    for j in range(1, 10):
        print(f"{i*j:3}", end="")
    print()  # 改行

zip(複数リストの同時ループ)

names = ["太郎", "花子", "次郎"]
ages = [20, 22, 19]
cities = ["東京", "大阪", "札幌"]

for name, age, city in zip(names, ages, cities):
    print(f"{name}{age}歳、{city})")

内包表記(リスト内包表記)

# 基本
squares = [x**2 for x in range(1, 6)]
# [1, 4, 9, 16, 25]

# 条件付き
evens = [x for x in range(20) if x % 2 == 0]
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# 変換 + 条件
words = ["Hello", "World", "Python", "AI"]
long_lower = [w.lower() for w in words if len(w) > 3]
# ['hello', 'world', 'python']

実践例:FizzBuzz

for i in range(1, 31):
    if i % 15 == 0:
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

まとめ

  • for はシーケンスの要素を順に処理
  • range() で回数指定のループ
  • enumerate() でインデックス付きループ
  • while は条件ベースのループ
  • break で中断、continue でスキップ
  • zip() で複数リストを同時にループ
  • 内包表記で簡潔にリストを作成