【Python】第2章第12回:無限ループの構造と注意点
Pythonで無限ループを作成する方法と、それに伴う注意点について解説します。無限ループは、特定の条件が満たされるまで処理を継続する際に役立ちますが、正しく設計しないと問題を引き起こす可能性があります。
0. 記事の概要
この記事を読むメリット
- 無限ループの基本を理解:Pythonで無限ループを安全に設計する方法が学べます。
- エラーを防ぐスキル:無限ループによるクラッシュを回避するコツを習得できます。
- 応用力を向上:無限ループを活用した実践的なプログラムを構築できます。
この記事で学べること
- 無限ループの基本的な構造
- 無限ループの注意点とエラー回避の方法
- 無限ループを使用した実践例
1. 無限ループの基本構造
1.1 無限ループの書き方
無限ループは、条件が常にTrue
である場合に作成されます。
# 無限ループの基本構造
while True:
print("無限ループの実行中...")
動作解説
while True
: 条件が常にTrue
であるため、ループは終了しません。print()
: 無限に「無限ループの実行中…」を出力します。- 停止するには、
Ctrl + C
を押す必要があります。
1.2 無限ループの用途
無限ループは、以下のような用途でよく使われます。
- ユーザー入力を待機するプログラム
- サーバーやデーモンのプロセス
- リアルタイムのデータ処理
2. 無限ループの応用例
2.1 ユーザー入力を使用した無限ループ
無限ループを使って、ユーザーからの入力を継続的に受け取るプログラムを作成します。
# ユーザー入力を使用した無限ループ
while True:
user_input = input("終了するには 'exit' を入力してください: ")
if user_input == "exit":
print("プログラムを終了します。")
break
動作解説
- ユーザーが入力した文字列を評価します。
'exit'
が入力された場合、break
文でループを終了します。- それ以外の場合は、再び入力を受け付けます。
2.2 時間制限付きの無限ループ
特定の時間が経過したら自動的に終了する無限ループを作成します。
# 時間制限付きの無限ループ
import time
start_time = time.time()
while True:
if time.time() - start_time > 10: # 10秒経過後に終了
print("10秒が経過しました。ループを終了します。")
break
動作解説
start_time
: ループ開始時の時間を記録します。time.time() - start_time
: 経過時間を計算します。- 10秒経過後に
break
文でループを終了します。
3. 無限ループに伴う注意点
無限ループを使用する際には、以下の点に注意が必要です。
- 終了条件の設計:終了条件を忘れるとプログラムが停止しません。
- リソースの消費:不要な計算や処理が続くと、CPUやメモリを消費します。
- 例外処理:エラーが発生してもループが継続するように適切な例外処理を追加しましょう。
4. 練習問題
以下の課題に挑戦してみましょう。
- 無限ループを使用して、ユーザーに数字を入力させ、その合計を表示するプログラムを作成してください。終了条件は
'stop'
とします。 - 特定の条件(例: 数字が負の場合)で停止する無限ループを作成してください。
5. 練習問題の解答と解説
問1の解答例
# 数字の合計を計算する無限ループ
total = 0
while True:
user_input = input("数字を入力してください (終了するには 'stop'): ")
if user_input == "stop":
break
total += int(user_input)
print(f"合計: {total}")
問2の解答例
# 負の数で終了する無限ループ
while True:
num = int(input("数字を入力してください: "))
if num < 0:
print("負の数が入力されたため終了します。")
break
6. まとめ
無限ループは、多くのプログラムで必要不可欠な機能ですが、終了条件やリソースの管理に注意が必要です。適切に設計することで、安全かつ効率的に活用できます。