チュートリアル

Python基礎構文:ループ処理(for, while)

Python入門ループforwhile
広告エリア

はじめに

Python基礎構文シリーズ第3回は「ループ処理」です。同じ処理を繰り返し実行する方法を学びます。

forループ

基本的な使い方

リストやタプルの要素を1つずつ処理します。

fruits = ["りんご", "みかん", "バナナ"]

for fruit in fruits:
    print(fruit)

# 出力:
# りんご
# みかん
# バナナ

range関数

指定した回数だけ繰り返します。

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

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

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

enumerate関数

インデックスと要素を同時に取得できます。

fruits = ["りんご", "みかん", "バナナ"]

for index, fruit in enumerate(fruits):
    print(f"{index}: {fruit}")

# 出力:
# 0: りんご
# 1: みかん
# 2: バナナ

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

# 出力:
# 1: りんご
# 2: みかん
# 3: バナナ

辞書のループ

user = {"name": "太郎", "age": 25, "city": "東京"}

# キーのループ
for key in user:
    print(key)

# キーと値のループ
for key, value in user.items():
    print(f"{key}: {value}")

# 値のみ
for value in user.values():
    print(value)

zip関数

複数のリストを同時にループします。

names = ["太郎", "花子", "次郎"]
ages = [25, 22, 30]

for name, age in zip(names, ages):
    print(f"{name}{age}歳です")

# 出力:
# 太郎は25歳です
# 花子は22歳です
# 次郎は30歳です

whileループ

条件が真の間、繰り返します。

count = 0

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

# 出力:
# 0, 1, 2, 3, 4

無限ループに注意

# 無限ループ(避けるべき)
# while True:
#     print("永遠に続く")

# 適切な終了条件を設定
count = 0
while True:
    print(count)
    count += 1
    if count >= 5:
        break  # ループを抜ける

break文

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

for i in range(10):
    if i == 5:
        break  # iが5になったらループを抜ける
    print(i)

# 出力:
# 0, 1, 2, 3, 4
# 検索処理の例
numbers = [1, 3, 5, 7, 9, 10, 11]

for num in numbers:
    if num % 2 == 0:  # 偶数を見つけたら
        print(f"最初の偶数: {num}")
        break

continue文

現在の繰り返しをスキップして次に進みます。

for i in range(5):
    if i == 2:
        continue  # iが2のときはスキップ
    print(i)

# 出力:
# 0, 1, 3, 4
# 奇数のみを処理
for num in range(10):
    if num % 2 == 0:  # 偶数はスキップ
        continue
    print(num)

# 出力:
# 1, 3, 5, 7, 9

else句(ループ)

ループが正常に完了した場合に実行されます。

for i in range(5):
    print(i)
else:
    print("ループが完了しました")

# 出力:
# 0, 1, 2, 3, 4
# ループが完了しました

break でループを抜けた場合は else は実行されません。

for i in range(5):
    if i == 3:
        break
    print(i)
else:
    print("この行は実行されません")

# 出力:
# 0, 1, 2

ネストされたループ

ループの中にループを書くことができます。

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

ネストされたループからのbreak

# 外側のループも抜けたい場合
found = False
for i in range(3):
    for j in range(3):
        if i == 1 and j == 1:
            found = True
            break
    if found:
        break

# または関数を使う方法
def find_item():
    for i in range(3):
        for j in range(3):
            if i == 1 and j == 1:
                return (i, j)
    return None

result = find_item()

リスト内包表記

ループを1行で書く方法です。

# 通常のforループ
squares = []
for i in range(5):
    squares.append(i ** 2)
print(squares)  # [0, 1, 4, 9, 16]

# リスト内包表記
squares = [i ** 2 for i in range(5)]
print(squares)  # [0, 1, 4, 9, 16]

# 条件付き
even_squares = [i ** 2 for i in range(10) if i % 2 == 0]
print(even_squares)  # [0, 4, 16, 36, 64]

実践例

数値の合計

numbers = [10, 20, 30, 40, 50]
total = 0

for num in numbers:
    total += num

print(f"合計: {total}")  # 合計: 150

# 組み込み関数を使う方が簡潔
print(sum(numbers))  # 150

ユーザー入力を繰り返し受け付ける

while True:
    answer = input("続けますか? (yes/no): ")
    if answer.lower() == "no":
        print("終了します")
        break
    print("処理を続行...")

まとめ

  • for はリストや範囲を繰り返す
  • while は条件が真の間繰り返す
  • range(n) で0からn-1まで
  • enumerate() でインデックスと要素を同時に取得
  • zip() で複数のリストを同時にループ
  • break でループを終了
  • continue で現在の繰り返しをスキップ
  • リスト内包表記で簡潔に書ける

次回は「関数」について学びます。

広告エリア