Python - ループ:効率的なプログラミングへのゲートウェイ

こんにちは、若きプログラマーたち!今日は、Pythonの中でも最も強力なコンセプトの1つであるループについて深く掘り下げます。あなたの親しみのある近所のコンピュータサイエンスの先生として、あなたをこの旅のガイドとして喜んでいます。信じてください、ループを使いこなすことができれば、コーディングでスーパーパワーを解錠したような気分になるでしょう!

Python - Loops

ループとは何で、なぜ私たちにループが必要でしょうか?

“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_readyFalse である限り続きます。各反復で waiting_time は1分ずつ増えます。5分待った後、order_readyTrue に設定し、ループを終了します。

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