4. 繰り返し処理で効率アップ
前回は条件分岐について学びました。今回は、同じ処理を効率よく繰り返す方法を学んでいきましょう。
4.1 for 文で決まった回数繰り返す
for文は、決まった回数の繰り返しを行うときに使います:
5回「こんにちは」と表示する
# 5回「こんにちは」と表示する
for i in range(5):
print("こんにちは")
# 繰り返しの番号を使う
for i in range(3):
print(f"{i + 1}番目の挨拶:こんにちは")
# 文字列の各文字を処理する
name = "Python"
for char in name:
print(char)
for文のポイント
- 繰り返す回数が決まっているときに使う
- iはカウンター変数(0から始まる)
- インデントで繰り返す処理を示す
4.2 range 関数で連続した数字を扱う
range関数を使うと、数字の範囲を簡単に指定できます:
0から4まで表示
# 0から4まで表示
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
# 2ずつ増やす
for i in range(0, 10, 2):
print(i) # 0, 2, 4, 6, 8
# カウントダウン
for i in range(5, 0, -1):
print(i) # 5, 4, 3, 2, 1
4.3 while 文で条件が変わるまで繰り返す
while文は、条件が満たされる間ずっと繰り返します:
カウントダウンタイマー
# カウントダウンタイマー
count = 5
while count > 0:
print(count)
count = count - 1
print("時間切れ!")
# パスワード入力
password = ""
while password != "secret":
password = input("パスワードを入力してください:")
print("ログイン成功!")
# 合計が100を超えるまで数を足す
total = 0
count = 0
while total <= 100:
count += 1
total += count
print(f"{count}回で合計が{total}になりました")
4.4 break, continue で繰り返しをコントロール
breakとcontinueを使うと、繰り返しの流れを制御できます:
繰り返しを途中で終了
# breakで繰り返しを途中で終了
while True:
answer = input("続けますか?(y/n):")
if answer == "n":
print("終了します")
break
# continueで次のループへスキップ
for i in range(1, 6):
if i == 3:
print("3はスキップします")
continue
print(f"数字:{i}")
4.5 リストと for 文でまとめて処理する
リストの要素を順番に処理するのにfor文が便利です:
点数リストの平均を計算
# 点数リストの平均を計算
scores = [85, 92, 78, 90, 88]
total = 0
for score in scores:
total += score
average = total / len(scores)
print(f"平均点:{average}")
# 名前リストから「田中」さんを探す
names = ["山田", "田中", "佐藤", "鈴木"]
for name in names:
if name == "田中":
print("田中さんが見つかりました!")
break
4.6 二重ループで表や表組みを作る
ループの中にループを入れることで、表のような二次元のデータを扱えます:
簡単な掛け算表
# 簡単な掛け算表
for i in range(1, 4):
for j in range(1, 4):
print(f"{i}×{j}={i*j}", end=" ")
print() # 改行
# 星のピラミッド
for i in range(1, 6):
for j in range(i):
print("★", end="")
print()
"""
出力:
★
★★
★★★
★★★★
★★★★★
"""
4.7 無限ループに注意しよう
無限ループは、プログラムが永遠に止まらなくなる危険な状態です:
無限ループの例
# 危険な例(無限ループ)
count = 1
while count > 0:
print(count)
count += 1 # countが減らないので永遠に続く
# 安全な例(ちゃんと終了条件がある)
count = 1
while count <= 5:
print(count)
count += 1
無限ループを防ぐポイント
- while文の条件が最終的にFalseになることを確認
- 繰り返しの中で条件を変更する処理があることを確認
- breakで抜け出す方法を用意する
課題 1. 1 から 100 までの合計を求めるプログラム
1から100までの合計を求めるプログラム
# 方法1:forループを使う
total = 0
for i in range(1, 101):
total += i
print(f"1から100までの合計:{total}")
# 方法2:whileループを使う
total = 0
num = 1
while num <= 100:
total += num
num += 1
print(f"1から100までの合計:{total}")
# チャレンジ:
# - 偶数だけの合計を求めてみよう
# - 3の倍数だけの合計を求めてみよう
# - 入力された数までの合計を求めてみよう
課題 2. 1 から 10 までの数字で掛け算表を表示するプログラム
1から10までの数字で掛け算表を表示するプログラム
# 見やすい九九表を作成
print(" ", end="")
for i in range(1, 11):
print(f"{i:4}", end="")
print("\n" + "-" * 50)
for i in range(1, 11):
print(f"{i:2} |", end="")
for j in range(1, 11):
print(f"{i*j:4}", end="")
print() # 改行
"""
出力例:
1 2 3 4 5 6 7 8 9 10
--------------------------------------------------
1 | 1 2 3 4 5 6 7 8 9 10
2 | 2 4 6 8 10 12 14 16 18 20
...
"""
# チャレンジ:
# - 表の範囲を変更できるようにしてみよう
# - 縦と横に線を引いて見やすくしてみよう
# - 3の段だけ色を変えてみよう(print文のオプションで)
まとめ
この章で学んだこと:
- for文で決まった回数の繰り返し
- while文で条件付きの繰り返し
- break/continueでの制御
- リストとの組み合わせ
- 二重ループの使い方
- 無限ループの注意点
次の章では、リストと辞書について詳しく学び、データを効率的に管理する方法を身につけます!