9.1 条件付きループ
ループ for
は、ループを何回実行するかが正確にわかっている場合に最適だよね。
でも、そういう状況ばかりじゃないんだよ。約半分のケースでは、ある条件(ルール)が真である間、命令ブロックを実行し続ける必要があるんだ。
そこでPythonではループ while
があるんだ。これの一般的な形は、forループよりもさらにシンプルだよ:
while 条件:
コマンド1
コマンド2
コマンドN
ループはその条件が真である間、ずっと実行され続けるよ。
重要! ループが永遠に実行されないようにするには、命令ブロックの中で条件に影響を与える何かが必要だよ。 そうでなければ、その条件は絶対に偽にならず、ループは終了しないんだ。
例:
例 | 説明 |
---|---|
|
画面に0 1 2 3 4を表示するんだ。 |
ループ while
では、2つのことが永遠に実行される:
- 条件がチェックされる。
- 命令ブロックが実行される。
条件が真であれば、命令ブロックが実行されるよ。もし条件が突然偽になった場合(たとえ命令ブロックが一度も実行されなかったとしても)、ループは終了する。
さらにもう一つの例として、入力されたデータの不明な数を扱うwhileループを見てみよう:
例 | 説明 |
---|---|
|
ループは、ユーザーが'exit'と入力するまで、すべてのデータを画面に出力するんだ。その後、最後の'exit'を出力して終了するよ。 |
9.2 break文
Pythonではbreak文は、whileループやforループの実行を即座に中断するために使われる。 これが非常に役立つのは、ループが条件に従って正常に終了する前に抜ける必要がある場合だ。
break
を使うと、プログラムの実行フローを柔軟に制御でき、実行時に動的に変化する条件に対応できるようになる。
基本的な使い方:
for num in range(10):
if num == 5:
break # numが5に達したらループを終了
print(num)
この例では、ループが0から4までの数字を表示する。numが5に達すると、break
文でループが中断される。
無限ループでの使用例:
while True:
response = input("終了するには 'exit' を入力してください: ")
if response == 'exit':
break
ここでbreak
を使うことで、ユーザーが'exit'を入力すると無限ループを抜けることができる。
break
は、入れ子のループの実行を中断したり、例外的な状況を処理したりする際にも頻繁に使用される。これにより、すぐに行動を中断する必要がある場合や、マルチスレッドやネットワークのアプリケーションでプロセスを中断する場合に便利だ。
例えば、検索やソートのタスクで必要な要素を見つけた後にループを続けるのが無意味な場合:
elements = [1, 2, 3, -99, 5]
# 最初の負の要素を探す
for element in elements:
if element < 0:
print("見つかった負の要素: ", element)
break
ベストプラクティスには、プログラムのロジックを複雑にしないように、break
を賢く使うことが含まれる。ループを中断する理由を、特にコンテキストから明らかでない場合にはコメントに書いておくのがよい。
break
の使用は合理的で、意味があるべきだ。例えば、コードの読みやすさや効率性を向上させるためで、ロジックを壊すためだけであってはならない。
この文を効果的に使うことで、特に集中的な計算を行うアルゴリズムにおいて、プログラムのパフォーマンスを大幅に向上させることができる。
9.3 continue文
continue文は、ループの実行フローを制御するための強力なツールだよ。
ループの現在の繰り返しの残りの部分をスキップして、次の繰り返しに進むんだ
この文は、ループ内で特定の条件をスキップするのによく使われる。
continueの基本的な使い方
簡単なループでのcontinueの使い方はこんな感じ:
for i in range(10):
if i % 2 == 0:
continue
print(i)
この例では、ループが1から9までの奇数だけを表示するんだ。i
が偶数になるたびに(2で割り切れるとき)、continue
が作動して、print()
の呼び出しをスキップし、次の繰り返しに進む。
現実のシナリオでのcontinue
の利用
データのフィルタリング: continue
を使用して、ループ内でより複雑な操作を行う前にデータを事前にフィルタリングすることができる。
data = ["apple", "banana", "", "cherry", "date"]
for fruit in data:
if not fruit:
continue # 空の文字列をスキップする
print(fruit.capitalize())
特定の条件のスキップ: 特に複雑な条件に基づいて特定の要素をスキップしたい場合に便利。
scores = [92, 85, 99, 78, 82, 100, 67, 88]
for score in scores:
if score < 80:
continue # 低いスコアをスキップする
print("おめでとうございます、あなたのスコア: ", score)
Pythonのcontinue
文は、反復において不適切な要素をスキップすることでコードをシンプルにし、より読みやすくするエレガントな方法を提供している。
continue
を過剰に使用すると、特に複雑なループで多くの条件が絡む場合、ループがどのデータを処理しているのか理解しにくくなる。
バランスを保つことが大切だよ。
GO TO FULL VERSION