[Python] while文でcontinueを使う
Pythonのwhile
文は、条件が真である限りループを繰り返す制御構造です。
このループ内でcontinue
文を使用すると、現在の反復をスキップし、次の反復に進むことができます。
例えば、特定の条件を満たす場合に処理をスキップしたいときに便利です。
これにより、無駄な処理を避け、効率的なコードを書くことが可能になります。
ただし、continue
を使う際は、無限ループに陥らないように注意が必要です。
while文でcontinueを使う具体例
基本的な使用例
while
文でcontinue
を使う基本的な例を見てみましょう。
continue
はループ内で特定の条件が満たされたときに、残りの処理をスキップして次のループに進むために使用されます。
# 1から5までの数字をループし、3のときはスキップする
i = 1
while i <= 5:
if i == 3:
i += 1
continue
print(i)
i += 1
1
2
4
5
この例では、i
が3のときにcontinue
が実行され、print(i)
がスキップされます。
その結果、3は出力されません。
条件に基づくcontinueの使用
continue
を条件に基づいて使用することで、特定の条件を満たす場合にのみ処理をスキップすることができます。
# 偶数のみを出力する
i = 0
while i < 10:
i += 1
if i % 2 != 0:
continue
print(i)
2
4
6
8
10
この例では、i
が奇数の場合にcontinue
が実行され、偶数のみが出力されます。
ネストされたループでのcontinueの使用
ネストされたループ内でcontinue
を使用することも可能です。
内側のループでcontinue
を使うと、内側のループの次の反復に進みます。
# 2次元リストの中で特定の値をスキップする
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
row = 0
while row < len(matrix):
col = 0
while col < len(matrix[row]):
if matrix[row][col] == 5:
col += 1
continue
print(matrix[row][col])
col += 1
row += 1
1
2
3
4
6
7
8
9
この例では、matrix
の中で値が5のときにcontinue
が実行され、その値はスキップされます。
無限ループでのcontinueの使用
無限ループ内でcontinue
を使用することもできます。
無限ループは通常、特定の条件が満たされるまで続けるために使用されます。
# ユーザーが0を入力するまで続ける
while True:
number = int(input("数字を入力してください(0で終了):"))
if number == 0:
break
if number < 0:
print("負の数はスキップされます")
continue
print(f"入力された数字は: {number}")
この例では、ユーザーが負の数を入力した場合にcontinue
が実行され、その入力はスキップされます。
0を入力するとループが終了します。
while文とcontinueの注意点
while
文でcontinue
を使用する際には、いくつかの注意点があります。
これらを理解しておくことで、コードの可読性やパフォーマンスを向上させることができます。
continueの使いすぎによる可読性の低下
continue
を多用すると、コードの流れが複雑になり、可読性が低下する可能性があります。
特に、複数の条件でcontinue
を使用する場合、どの条件でどの処理がスキップされるのかが分かりにくくなることがあります。
- 可読性の低下の例:
i = 0
while i < 10:
i += 1
if i % 2 == 0:
continue
if i % 3 == 0:
continue
print(i)
このコードでは、i
が2の倍数または3の倍数のときにcontinue
が実行されますが、条件が多くなると理解しにくくなります。
無限ループのリスク
continue
を使用する際に、ループの終了条件を適切に管理しないと、無限ループに陥るリスクがあります。
特に、continue
によってループ変数の更新がスキップされる場合、ループが終了しないことがあります。
- 無限ループの例:
i = 0
while i < 5:
if i == 2:
continue
print(i)
i += 1
このコードでは、i
が2のときにcontinue
が実行され、i
の更新がスキップされるため、無限ループに陥ります。
break文との違いと使い分け
continue
とbreak
はどちらもループの制御に使用されますが、その動作は異なります。
continue
は現在の反復をスキップして次の反復に進むのに対し、break
はループ全体を終了します。
- 違いの例:
i = 0
while i < 5:
i += 1
if i == 3:
continue
if i == 4:
break
print(i)
このコードでは、i
が3のときにcontinue
が実行され、3はスキップされます。
i
が4のときにbreak
が実行され、ループが終了します。
- 使い分けのポイント:
continue
は特定の条件で処理をスキップしたい場合に使用します。break
は特定の条件でループを完全に終了したい場合に使用します。
これらの注意点を理解し、適切にcontinue
を使用することで、より効率的で読みやすいコードを書くことができます。
応用例
continue
を活用することで、さまざまな応用的な処理を実現することができます。
ここでは、continue
を使ったフィルタリング処理、データのスキップ処理、エラーハンドリングの例を紹介します。
continueを使ったフィルタリング処理
continue
を使用して、特定の条件に合致するデータをフィルタリングすることができます。
例えば、リストから特定の条件を満たす要素だけを選び出す場合に有効です。
# リストから偶数のみをフィルタリングする
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_numbers = []
i = 0
while i < len(numbers):
if numbers[i] % 2 != 0:
i += 1
continue
filtered_numbers.append(numbers[i])
i += 1
print(filtered_numbers)
[2, 4, 6, 8, 10]
この例では、numbers
リストから偶数のみをfiltered_numbers
リストに追加しています。
奇数の場合はcontinue
でスキップされます。
continueを使ったデータのスキップ処理
データ処理の際に、特定の条件に合致するデータをスキップしたい場合にcontinue
を使用することができます。
# リストから特定の値をスキップして出力する
data = ["apple", "banana", "cherry", "date", "elderberry"]
skip_value = "cherry"
i = 0
while i < len(data):
if data[i] == skip_value:
i += 1
continue
print(data[i])
i += 1
apple
banana
date
elderberry
この例では、data
リストの中で"cherry"
をスキップして出力しています。
continueを使ったエラーハンドリング
データ処理中にエラーが発生した場合に、そのエラーを無視して次のデータに進むためにcontinue
を使用することができます。
# リストの要素を整数に変換し、エラーが発生した場合はスキップする
data = ["10", "20", "thirty", "40", "fifty"]
converted_data = []
i = 0
while i < len(data):
try:
number = int(data[i])
converted_data.append(number)
except ValueError:
print(f"変換エラー: {data[i]} をスキップします")
i += 1
continue
i += 1
print(converted_data)
変換エラー: thirty をスキップします
変換エラー: fifty をスキップします
[10, 20, 40]
この例では、data
リストの要素を整数に変換し、変換できない要素はエラーメッセージを表示してスキップしています。
continue
を使うことで、エラーが発生しても処理を続行できます。
まとめ
while
文でのcontinue
の使用は、特定の条件で処理をスキップするための便利な方法です。
この記事では、continue
の基本的な使い方から応用例、注意点について詳しく解説しました。
これにより、continue
を効果的に活用するための知識を得ることができたでしょう。
今後は、実際のプログラミングでcontinue
を活用し、コードの効率化と可読性の向上を目指してみてください。