プログラムを書いていると、ユーザーが入力した複数のデータをまとめて管理したい、という場面がよくあります。例えば、複数のペットの名前や、買い物リストの品目などです。
一つ一つのデータを別々の変数で管理するのは非常に非効率です。
# この方法は非効率
item1 = "milk"
item2 = "bread"
item3 = "eggs"
# ...
このような場合に役立つのがリストです。この記事では、ユーザーが入力した値を、while
ループを使って動的にリストへ追加していく方法を解説します。
ユーザーの入力をリストに保存するプログラム
これから作成するプログラムは、ユーザーが趣味を好きなだけ入力でき、最後に入力された趣味の一覧を表示する、というものです。ユーザーが何も入力せずにEnterキーを押したら、入力の終了とみなします。
完成したコードは以下のようになります。
# 趣味を保存するための空のリストを準備
hobbies = []
# 無限ループを開始
while True:
# len(hobbies) + 1 で、何番目の入力かを表示
prompt = f"あなたの趣味を教えてください({len(hobbies) + 1}つ目)。終了するにはEnterキーだけ押してください: "
user_input = input(prompt)
# 入力が空文字列ならループを抜ける
if user_input == "":
break
# 入力された趣味をリストに追加
hobbies = hobbies + [user_input]
# ループ終了後、リストの内容を表示
print("\n--- あなたの趣味一覧 ---")
for hobby in hobbies:
print(f"- {hobby}")
コードの解説
このプログラムは、いくつかのステップに分かれています。
1. 空のリストを準備する
hobbies = []
まず、ユーザーの入力を保存するための空のリストを変数hobbies
として作成します。
2. while
ループで入力を繰り返す
while True:
# ...
while True:
は、break
文が実行されるまで無限に繰り返されるループを作成します。これにより、ユーザーが好きなだけ趣味を入力できるようになります。
3. ループの終了条件をチェックする
user_input = input(prompt)
if user_input == "":
break
input()
関数でユーザーからの入力を受け取ります。もしユーザーが何も入力せずにEnterキーを押した場合、input()
は空の文字列(""
)を返します。if
文でこの条件をチェックし、一致すればbreak
文でwhile
ループを終了させます。
4. リストに要素を追加する
hobbies = hobbies + [user_input]
ユーザーが何か趣味を入力した場合、その文字列をリストに追加します。[user_input]
のように角括弧で囲むことで、入力された文字列を要素とする新しいリストを作成し、+
演算子で既存のhobbies
リストと連結しています。
補足: Pythonでは、リストの末尾に要素を追加するためにより効率的な**
.append()
メソッド**が用意されています。以下のように書き換えるのが一般的です。Python
hobbies.append(user_input)
5. for
ループでリストの内容を表示する
print("\n--- あなたの趣味一覧 ---")
for hobby in hobbies:
print(f"- {hobby}")
入力が終了した後、for
ループを使ってhobbies
リストの要素を一つずつ取り出し、画面に表示します。
まとめ
今回は、while
ループとリストを組み合わせて、ユーザーからの入力を動的に受け取り、保存する方法を学びました。
- 空のリストを準備し、
while
ループでユーザーの入力を待ち受けます。 - 特定の入力(今回は空文字列)をループの終了条件とします。
- 入力された値は、
+
演算子や.append()
メソッドでリストに追加していきます。 - 最後に
for
ループでリストの内容を処理します。
この方法は、インタラクティブなプログラムを作成する際の基本的なテクニックです。ぜひ色々な応用を試してみてください。