未分類

【Python】第2章第12回:無限ループの構造と注意点

Pythonで無限ループを作成する方法と、それに伴う注意点について解説します。無限ループは、特定の条件が満たされるまで処理を継続する際に役立ちますが、正しく設計しないと問題を引き起こす可能性があります。

0. 記事の概要

この記事を読むメリット

  • 無限ループの基本を理解:Pythonで無限ループを安全に設計する方法が学べます。
  • エラーを防ぐスキル:無限ループによるクラッシュを回避するコツを習得できます。
  • 応用力を向上:無限ループを活用した実践的なプログラムを構築できます。

この記事で学べること

  • 無限ループの基本的な構造
  • 無限ループの注意点とエラー回避の方法
  • 無限ループを使用した実践例

1. 無限ループの基本構造

1.1 無限ループの書き方

無限ループは、条件が常にTrueである場合に作成されます。

# 無限ループの基本構造
while True:
    print("無限ループの実行中...")
動作解説
  1. while True: 条件が常にTrueであるため、ループは終了しません。
  2. print(): 無限に「無限ループの実行中…」を出力します。
  3. 停止するには、Ctrl + Cを押す必要があります。

1.2 無限ループの用途

無限ループは、以下のような用途でよく使われます。

  • ユーザー入力を待機するプログラム
  • サーバーやデーモンのプロセス
  • リアルタイムのデータ処理

2. 無限ループの応用例

2.1 ユーザー入力を使用した無限ループ

無限ループを使って、ユーザーからの入力を継続的に受け取るプログラムを作成します。

# ユーザー入力を使用した無限ループ
while True:
    user_input = input("終了するには 'exit' を入力してください: ")
    if user_input == "exit":
        print("プログラムを終了します。")
        break
動作解説
  1. ユーザーが入力した文字列を評価します。
  2. 'exit'が入力された場合、break文でループを終了します。
  3. それ以外の場合は、再び入力を受け付けます。

2.2 時間制限付きの無限ループ

特定の時間が経過したら自動的に終了する無限ループを作成します。

# 時間制限付きの無限ループ
import time

start_time = time.time()

while True:
    if time.time() - start_time > 10:  # 10秒経過後に終了
        print("10秒が経過しました。ループを終了します。")
        break
動作解説
  1. start_time: ループ開始時の時間を記録します。
  2. time.time() - start_time: 経過時間を計算します。
  3. 10秒経過後にbreak文でループを終了します。

3. 無限ループに伴う注意点

無限ループを使用する際には、以下の点に注意が必要です。

  • 終了条件の設計:終了条件を忘れるとプログラムが停止しません。
  • リソースの消費:不要な計算や処理が続くと、CPUやメモリを消費します。
  • 例外処理:エラーが発生してもループが継続するように適切な例外処理を追加しましょう。

4. 練習問題

以下の課題に挑戦してみましょう。

  1. 無限ループを使用して、ユーザーに数字を入力させ、その合計を表示するプログラムを作成してください。終了条件は'stop'とします。
  2. 特定の条件(例: 数字が負の場合)で停止する無限ループを作成してください。

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. まとめ

無限ループは、多くのプログラムで必要不可欠な機能ですが、終了条件やリソースの管理に注意が必要です。適切に設計することで、安全かつ効率的に活用できます。