Python - ループ:効率的なプログラミングへのゲートウェイ
こんにちは、若きプログラマーたち!今日は、Pythonの中でも最も強力なコンセプトの1つであるループについて深く掘り下げます。あなたの親しみのある近所のコンピュータサイエンスの先生として、あなたをこの旅のガイドとして喜んでいます。信じてください、ループを使いこなすことができれば、コーディングでスーパーパワーを解錠したような気分になるでしょう!
ループとは何で、なぜ私たちにループが必要でしょうか?
“Hello, World!”を100回印刷するプログラムを書くという課題になったとしましょう。ループを使わないと、同じ行のコードを100回書く必要があります!それは単に退屈だけでなく、非効率的です。そんなときにループが登場します。
ループは、私たちがコードのブロックを繰り返し実行するためのものです。それは、ある条件が満たされるまでコードを回しているメリーゴーランドのようなものです。
ループのフローチャート
コードに飛び込む前に、ループがどのように動作するかを視覚化してみましょう:
[開始]
|
v
[カウンターの初期化]
|
v
[条件の確認]
|
[True] [False]
| |
v v
[コードの実行] [ループの終了]
|
v
[カウンターの更新]
|
'--------^
このフローチャートは、ほとんどのループの基本構造を表しています。カウンターを設定し、条件を確認し、条件が真であればコードを実行し、カウンターを更新し、再び条件を確認します。このサイクルは、条件が偽になるまで続きます。
Pythonにおけるループの種類
Pythonは、for
ループと while
ループの2つの主要なタイプのループを提供します。それぞれを楽しい例とともに探ってみましょう!
1. For ループ
for
ループは、先に決まっている回数だけコードのブロックを実行したい場合に使用されます。それは、「このことをX回行う」とコードに指示するのに似ています。
基本構文:
for item in sequence:
# 実行されるコード
例1:羊を数える
for sheep in range(5):
print(f"羊の数 {sheep + 1}")
# 出力:
# 羊の数 1
# 羊の数 2
# 羊の数 3
# 羊の数 4
# 羊の数 5
この例では、for
ループを使って羊を数えています。range(5)
関数は0から4までの数字のシーケンスを作成し、ループはこれらの数字すべてに対して反復します。出力の際に sheep + 1
を使う理由は、range(5)
は0から始まるが、1から数えたいためです。
例2:リストを反復処理する
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(f"{fruit}を食べるのが好きです!")
# 出力:
# appleを食べるのが好きです!
# bananaを食べるのが好きです!
# cherryを食べるのが好きです!
ここでは、果物のリストを反復処理しています。リストの各果物に対して、その果物を食べることが好きであるという文を出力します。Pythonが自動的にリストの各アイテムをループの各反復で fruit
変数に割り当てていることに注意してください。
2. While ループ
while
ループは、ある条件が真である限りコードのブロックを繰り返したい場合に使用されます。「私が止めるまで続け」と言うのに似ています。
基本構文:
while condition:
# 実行されるコード
例3:不耐心なウェイター
order_ready = False
waiting_time = 0
while not order_ready:
waiting_time += 1
print(f"{waiting_time}分待っています...")
if waiting_time >= 5:
order_ready = True
print("注文ができました!")
# 出力:
# 1分待っています...
# 2分待っています...
# 3分待っています...
# 4分待っています...
# 5分待っています...
# 注文ができました!
この例では、レストランで注文を待つシナリオをシミュレートしています。ループは order_ready
が False
である限り続きます。各反復で waiting_time
は1分ずつ増えます。5分待った後、order_ready
を True
に設定し、ループを終了します。
Pythonのループ制御文
時々、ループに対してさらに制御が必要な場合があります。Pythonは3つのループ制御文を提供しています:
文 | 説明 |
---|---|
break |
ループを途中で終了します |
continue |
現在の反復の残りをスキップし、次の反復に移行します |
pass |
何も行わず、プレースホルダーとして機能します |
これらを実際に見てみましょう!
例4:悪い癖を断ち切る
bad_habits = ["procrastination", "oversleeping", "junk food", "too much TV"]
days_clean = 0
for habit in bad_habits:
if habit == "junk food":
print(f"{habit}は我慢できません!ステイキを破棄します。")
break
days_clean += 1
print(f"{habit}を避けて {days_clean} 日目!")
print(f"良い風習の日数: {days_clean}")
# 出力:
# procrastinationを避けて 1日目!
# oversleepingを避けて 2日目!
# junk foodは我慢できません!ステイキを破棄します。
# 良い風習の日数: 2
この例では、break
文を使用して "junk food" に遭遇したときにループを途中で終了します。これは、良い風習の連続を破るシナリオをシミュレートしています。
例5:野菜をスキップする
foods = ["pizza", "broccoli", "burger", "spinach", "ice cream"]
print("お母さんは全てを食べないといけないと言っていますが...")
for food in foods:
if food in ["broccoli", "spinach"]:
print(f"おっと、{food}を床に落としちゃいた!")
continue
print(f"{food}を食べています!美味しい!")
# 出力:
# お母さんは全てを食べないといけないと言っていますが...
# pizzaを食べています!美味しい!
# おっと、broccoliを床に落としちゃいた!
# burgerを食べています!美味しい!
# おっと、spinachを床に落としちゃいた!
# ice creamを食べています!美味しい!
ここでは、continue
文を使用して、食べ物のリストの中の野菜をスキップしています。broccoli
または spinach
に遭遇した場合、エクスクーズを言いながら次の反復に進みます。
結論
おめでとうございます!Pythonの旅においてループを使いこなすことで大きな飛躍を遂げました。練習は成功の道だと言いますので、これらのコンセプトを実験することをためらいません。独自のループを作成し、異なるタイプを組み合わせて、何を作ることができるかを見てみましょう。
ループは曲のビートのように、コードを動かし続けるのに必要です。だから、コーディングを続け、ループを続け、最も重要なのは楽しむことを忘れないでください!
楽しいコーディングを、未来のPythonのマエストロたち!
Credits: Image by storyset