こんにちは、Tech Samuraiです!
前回の記事「【Python入門 #4】プログラムに「判断力」を!比較演算子とif文で条件分岐をマスターしよう」では、if文を使ってプログラムに状況判断をさせる方法を学びましたね。
これまでのプログラムは、一度実行すると上から下まで処理が流れて、すぐに終わってしまいました。しかし、もし「この処理を100回繰り返したい」と思ったらどうでしょう? 同じコードを100行書くのは、賢いやり方ではありません。
今回のテーマは、そんな退屈な繰り返し作業をコンピュータに任せるための超強力な武器、「ループ(繰り返し処理)」です。Pythonには、主に2種類のループ構文、for
ループとwhile
ループがあります。これらをマスターすれば、あなたは面倒な手作業から解放され、プログラムの真の力を引き出すことができます!
回数が決まっている繰り返し:「for」ループ
for
ループは、**「〜の回数だけ」「リストの全要素に対して」**のように、繰り返す回数や範囲があらかじめ決まっている場合に使う、最も一般的なループです。
基本的な使い方:range()と組み合わせる
「5回繰り返す」のように、決まった回数だけ処理を行いたい場合、range()
関数と組み合わせるのが定番です。
# range(5) は、0, 1, 2, 3, 4 という連続した数値を生成する
print("5回あいさつします。")
for i in range(5):
# iという変数には、0, 1, 2, 3, 4 が順番に入ってくる
print(f"{i + 1}回目: こんにちは!")
実行結果:
5回あいさつします。
1回目: こんにちは!
2回目: こんにちは!
3回目: こんにちは!
4回目: こんにちは!
5回目: こんにちは!
リストの要素を一つずつ処理する
for
ループのもう一つの強力な使い方は、リストなどの「コレクション」から要素を一つずつ取り出して処理することです。
members = ["Tech Samurai", "Ninja Python", "Geek Sensei"]
print("メンバーを紹介します!")
for member in members:
# memberという変数に、リストの要素が順番に入ってくる
print(f"- {member}")
実行結果:
メンバーを紹介します!
- Tech Samurai
- Ninja Python
- Geek Sensei
条件が満たされている間の繰り返し:「while」ループ
while
ループは、繰り返す回数が決まっておらず、**「〜である限り、ずっと」**という、特定の条件が満たされている間だけ処理を繰り返したい場合に使います。
例えるなら… for
ループが「チェックリストの項目を全部こなす」のに対し、while
ループは「体力が0になるまでゲームを続ける」ようなイメージです。
【超重要:無限ループに注意!】while
ループを使う上で最も重要な注意点は、**ループ内の処理で、いつかは必ず条件が満たされなくなる(Falseになる)ようにする**ことです。これを忘れると、プログラムが永遠に終了しない**「無限ループ」**に陥ってしまいます。
# カウントダウンプログラム
count = 5
print("カウントダウン開始!")
while count > 0:
print(count)
# ループのたびにcountを1ずつ減らす。これが無いと無限ループになる!
count -= 1
print("発射!")
実行結果:
カウントダウン開始!
5
4
3
2
1
発射!
ループを制御する呪文:「break」と「continue」
ループの動きを、より細かく制御するための2つの便利な命令があります。
break(中断)
break
は、ループの条件に関わらず、その場で**ループを強制的に中断して抜け出す**ための命令です。「緊急脱出ボタン」のようなものです。
# 宝箱の中から「伝説の剣」を探す
items = ["やくそう", "どくけしそう", "せいすい", "でんせつのけん", "こんぼう"]
for item in items:
print(f"{item} を見つけた。")
if item == "でんせつのけん":
print("お目当てのアイテムを見つけたので、探索を終了します!")
break # ここでループを中断
continue(スキップ)
continue
は、その回の処理だけを中断し、**次の回の処理へとスキップする**ための命令です。「プレイリストの今の曲をスキップする」ようなイメージです。
# 1から10までのうち、奇数だけをスキップして偶数だけ表示する
for i in range(1, 11):
# もし i を 2 で割った余りが 1 なら(奇数なら)
if i % 2 == 1:
continue # ここで今の回の処理を中断し、次のループに移る
print(i) # 偶数の場合のみ、この行が実行される
実践!数当てゲーム
最後に、これまで学んだwhile
, if
, break
を組み合わせて、簡単な数当てゲームを作ってみましょう!
import random
# 1から20までのランダムな答えを用意
answer = random.randint(1, 20)
print("1から20までの数を当ててみてね!")
while True: # 正解するまで無限にループ
try:
guess_str = input("あなたの予想は?: ")
guess = int(guess_str)
if guess < answer:
print("もっと大きいよ!")
elif guess > answer:
print("もっと小さいよ!")
else:
print("大正解!おめでとう!")
break # 正解したのでループを抜ける
except ValueError:
print("数字を入力してくださいね。")
まとめ
今回は、退屈な繰り返し作業を自動化するための「ループ」について探検しました。
- 繰り返す回数が決まっている場合は**
for
ループ**。 - 特定の条件が満たされている間繰り返す場合は**
while
ループ**。 - ループを途中で抜け出す**
break
**と、次の回へスキップする**continue
**。
ループをマスターしたことで、あなたはコンピュータの圧倒的な処理能力を、本格的に引き出せるようになりました。何千、何万回という繰り返しも、コンピュータは文句一つ言わずに一瞬でこなしてくれます。
さて、これまでの冒険で、データを「変数」に入れ、「演算子」で計算し、「if文」で判断し、「ループ」で繰り返すことができるようになりました。プログラミングの基本的な骨格は、ほぼマスターしたと言えるでしょう。次回は、より多くのデータをまとめて扱うための強力な道具、**「リスト」と「辞書」**の世界を探検します。お楽しみに!
コメント