Python

【Python】第2章第5回:while文の使い方と実用例

Pythonでは、while文を使用して条件が満たされている間、繰り返し処理を実行することができます。本記事では、while文の基本構造から応用例までを詳しく解説します。

0. 記事の概要

この記事を読むメリット

  • while文の基本を理解:条件を満たす限り繰り返し処理を行う方法が学べます。
  • 実用的なスキルを取得:ユーザー入力やループ制御をwhile文で実現する方法がわかります。
  • エラーを回避:無限ループのリスクを防ぐためのコツが学べます。

この記事で学べること

  • while文の基本構造
  • ループの終了条件の設定
  • while文を活用した実践的なプログラムの作成

1. while文の基本構造

1.1 while文の書き方

Pythonのwhile文は、指定した条件がTrueである限り、繰り返し処理を行います。

# while文の基本構造
count = 0

while count < 5:
    print(count)
    count += 1
動作解説
  1. count < 5: 条件がTrueの間、ループが実行されます。
  2. ループ内でcountをインクリメントし、条件がFalseになるとループが終了します。

1.2 無限ループに注意

条件が常にTrueの場合、無限ループに陥る可能性があります。

# 無限ループの例
while True:
    print("無限ループです。終了するにはCtrl+Cを押してください。")
動作解説
  1. 条件がTrueのままなので、ループは終了しません。
  2. ループ終了のためにはbreak文を使用するか、外部から終了指示を出す必要があります。

2. while文を使用した応用例

2.1 ユーザー入力を用いたループ

ユーザーが特定の条件を満たすまで繰り返し入力を求めるプログラムを作成します。

# ユーザー入力によるループ
while True:
    user_input = input("終了するには 'exit' を入力してください: ")
    if user_input == "exit":
        print("終了します。")
        break
動作解説
  1. ユーザー入力を評価し、'exit'が入力された場合、breakでループを終了します。
  2. それ以外の場合はループを継続します。

2.2 数値の合計を計算

入力された数値を合計し、0が入力されたら結果を表示して終了するプログラムを作成します。

# 数値の合計を計算
total = 0

while True:
    num = int(input("数値を入力してください (終了するには0): "))
    if num == 0:
        break
    total += num

print(f"合計: {total}")
動作解説
  1. ユーザー入力値が0でない限り、合計に加算されます。
  2. 0が入力されるとループが終了し、結果が出力されます。

3. 実践例:while文を活用したプログラム

カウントダウンタイマーを実装します。特定の秒数から0までカウントダウンし、「時間切れ」と表示します。

# カウントダウンタイマー
import time

seconds = int(input("カウントダウン秒数を入力してください: "))

while seconds > 0:
    print(seconds)
    time.sleep(1)
    seconds -= 1

print("時間切れ!")
動作解説
  1. 入力された秒数からカウントダウンを開始します。
  2. time.sleep(1)で1秒間待機し、secondsをデクリメントします。
  3. カウントダウン終了後、「時間切れ」と表示されます。

4. 練習問題

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

  1. 特定の文字列が入力されるまでループを継続し、入力された文字列をすべてリストに追加するプログラムを作成してください。
  2. 入力された数値が負の数であれば終了し、入力された数値の合計を表示するプログラムを作成してください。

5. 練習問題の解答と解説

問1の解答例

# 入力をリストに追加
inputs = []

while True:
    text = input("文字列を入力してください (終了するには 'stop'): ")
    if text == "stop":
        break
    inputs.append(text)

print("入力された文字列:", inputs)

問2の解答例

# 負の数で終了するループ
total = 0

while True:
    num = int(input("数値を入力してください (負の数で終了): "))
    if num < 0:
        break
    total += num

print(f"合計: {total}")

6. まとめ

Pythonのwhile文を使うことで、柔軟で強力な繰り返し処理が可能になります。これを基に、さらに高度なプログラム作成に挑戦してください。