ユーザーからの入力を受け取る:input関数の使い方#

はじめに#

前回までの記事では、文字列の様々な操作方法について学びました。プログラムの中で文字列を扱う基本が理解できたことでしょう。

しかし、これまでのプログラムは、コード内に値が直接書かれている「静的」なものでした。実際のプログラムでは、ユーザーと対話しながら動作することが多いです。例えば、ユーザーの名前を聞いて挨拶をしたり、年齢を入力してもらって計算をしたりといった動的な処理が必要です。

今回は、ユーザーから情報を受け取るための input() 関数について学びます。この関数を使えば、プログラムの実行中にユーザーとやり取りできるようになります。

input関数の基本#

input() 関数は、ユーザーがキーボードから入力した内容を取得するためのPythonの基本的な関数です。最も単純な形式は次のとおりです。

>
user_input = input()
print(f"あなたの入力: {user_input}")

このコードを実行すると、プログラムは一時停止し、ユーザーからの入力を待ちます。Google Colabでinput関数を使用する場合、入力フィールドがコードセルの下に表示されます。

Google Colabの入力フィールド

キーボードで何か入力してEnterキーを押すと、その内容が user_input 変数に格納されます。

あなたの入力: こんにちは

この例では、入力フィールドに「こんにちは」と入力したと仮定しています。入力する内容によって結果は変わります。

プロンプトを表示する#

input() 関数には、ユーザーに何を入力してほしいかを示す「プロンプト」(案内メッセージ)を引数として渡すことができます。これにより、ユーザーに対して明確な指示を出すことができます。

>
name = input("あなたの名前を入力してください: ")
print(f"こんにちは、{name}さん!")

実行結果(「山田」と入力した場合):

あなたの名前を入力してください: 山田
こんにちは、山田さん!

プロンプトを使うことで、ユーザーは何を入力すべきかが明確になります。常に分かりやすいプロンプトを提供することをお勧めします。

入力値の型に注意#

input() 関数で受け取った入力は、常に文字列(str型) として扱われます。これは、数値を入力した場合でも同じです。

例えば、次のようなコードを考えてみましょう。

>
age = input("あなたの年齢を入力してください: ")
print(f"あなたの年齢は {age} 歳です")
print(f"変数ageの型: {type(age)}")

実行結果(「25」と入力した場合):

あなたの年齢を入力してください: 25
あなたの年齢は 25 歳です
変数ageの型: <class 'str'>

「25」という数字を入力しても、age 変数には文字列 "25" が格納されています。これは、数値計算を行う際に注意が必要です。

次のコード例では、年齢を10年後に計算しようとしていますが、エラーになります。

>
age = input("あなたの年齢を入力してください: ")
age_after_10_years = age + 10  # エラーになる
print(f"10年後のあなたの年齢は {age_after_10_years} 歳です")

このコードを実行すると、次のようなエラーメッセージが表示されます。

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-26-7506ad7dd0ba> in <cell line: 0>()
      1 age = input("あなたの年齢を入力してください: ")
----> 2 age_after_10_years = age + 10  # エラーになる
      3 print(f"10年後のあなたの年齢は {age_after_10_years} 歳です")

TypeError: can only concatenate str (not "int") to str

このエラーは、文字列(str型)と数値(int型)を足そうとしたために発生しました。Pythonでは、異なる型のデータを直接演算することはできません。

型変換を使った解決方法#

入力値を数値として扱いたい場合は、型変換関数を使用します。

  • int(): 整数に変換
  • float(): 浮動小数点数(小数)に変換

先ほどの例を修正してみましょう。

>
age = input("あなたの年齢を入力してください: ")
age = int(age)  # 文字列を整数に変換
age_after_10_years = age + 10
print(f"10年後のあなたの年齢は {age_after_10_years} 歳です")

実行結果(「25」と入力した場合):

あなたの年齢を入力してください: 25
10年後のあなたの年齢は 35 歳です

これで正しく計算ができました。入力を一行で整数に変換することもできます。

>
age = int(input("あなたの年齢を入力してください: "))
age_after_10_years = age + 10
print(f"10年後のあなたの年齢は {age_after_10_years} 歳です")

この方法でも同じ結果が得られます。

型変換時のエラー処理#

注意点として、ユーザーが数値以外の入力をした場合、int()float() による変換はエラーになります。

>
age = int(input("あなたの年齢を入力してください: "))  # 「二十五」と入力するとエラー

例えば「二十五」と入力すると、次のようなエラーが発生します。

あなたの年齢を入力してください: 二十五
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-27-58e19be5c1b7> in <cell line: 0>()
----> 1 age = int(input("あなたの年齢を入力してください: "))  # 「二十五」と入力するとエラー

ValueError: invalid literal for int() with base 10: '二十五'

このようなエラーへの対処方法は、「例外処理」というテクニックで解決できます。現時点では、ユーザーに数値を入力するよう明確な指示を出すことが重要です。

入力のベストプラクティス#

ユーザー入力を扱う際の良い習慣をいくつか紹介します。

  1. 明確なプロンプトを提供する:ユーザーに何を入力すべきかを明確に伝える
  2. 入力値を検証する:期待する形式や範囲内の値かを確認する
  3. 適切な型変換を行う:数値として扱う場合は、int()float() で変換する
  4. エラー処理を考慮する:不正な入力に対してもプログラムが正しく動作するようにする

まとめ#

この記事では、Pythonの input() 関数を使ってユーザーからの入力を受け取る方法を学びました。

主なポイントは以下の通りです。

  • input() 関数を使うと、ユーザーからの入力を受け取ることができる
  • 引数としてプロンプト(案内メッセージ)を指定できる
  • input() 関数の戻り値は常に文字列(str型)である
  • 数値として扱いたい場合は、int()float() で型変換が必要
  • 型変換時には入力値によってエラーが発生する可能性がある

input() 関数を使えるようになると、ユーザーとインタラクティブなプログラムが作れるようになります。これにより、より実用的なアプリケーションの開発が可能になります。