[Python] 文字列をキーボードから入力する方法【input()】

Pythonでキーボードから文字列を入力するには、input()関数を使用します。

この関数は、ユーザーが入力したデータを文字列として返します。

例えば、name = input("名前を入力してください: ")とすると、プロンプトに「名前を入力してください:」と表示され、ユーザーが入力した内容がname変数に格納されます。

input()は常に文字列を返すため、数値として扱いたい場合はint()float()でキャストする必要があります。

この記事でわかること
  • input()関数の基本的な使い方
  • データ型変換の方法と注意点
  • 複数行や複数値の入力処理
  • 実用的なプログラムの例
  • エラー処理の重要性と実装方法

目次から探す

文字列をキーボードから入力する基本的な方法

input()関数の基本的な使い方

Pythonでは、キーボードからの入力を受け取るためにinput()関数を使用します。

この関数は、ユーザーが入力した文字列を取得し、プログラム内で利用できるようにします。

基本的な使い方は以下の通りです。

# ユーザーからの入力を受け取る
user_input = input("文字列を入力してください: ")
print("入力された文字列:", user_input)

このコードを実行すると、コンソールに「文字列を入力してください: 」というメッセージが表示され、ユーザーが入力した文字列がuser_inputに格納されます。

文字列を入力してください: Python
入力された文字列: Python

input()で入力されたデータの型

input()関数は、常に文字列型strのデータを返します。

したがって、数値や他のデータ型として扱いたい場合は、明示的に型変換を行う必要があります。

以下はその例です。

# 数値を入力として受け取る
number_input = input("数値を入力してください: ")
number = int(number_input)  # 整数に変換
print("入力された数値の2倍:", number * 2)
数値を入力してください: 5
入力された数値の2倍: 10

プロンプトメッセージの表示方法

input()関数には、ユーザーに入力を促すためのプロンプトメッセージを指定できます。

このメッセージは、ユーザーが何を入力すればよいかを示すために重要です。

以下のように使用します。

# プロンプトメッセージを指定
name = input("あなたの名前を入力してください: ")
print("こんにちは、", name, "さん!")
あなたの名前を入力してください: 太郎
こんにちは、 太郎 さん!

input()での改行の扱い

input()関数は、ユーザーが入力を終えるまでプログラムの実行を一時停止します。

ユーザーがEnterキーを押すと、入力が完了し、次の処理に進みます。

改行は入力の一部として扱われません。

以下の例を見てみましょう。

# 改行を含む入力
multi_line_input = input("複数行の入力をしてください(終了するにはEnterを押してください): ")
print("入力された内容:", multi_line_input)
複数行の入力をしてください(終了するにはEnterを押してください): こんにちは
入力された内容: こんにちは

input()での空白入力の扱い

ユーザーが空白を入力した場合、input()関数はその空白を含む文字列を返します。

空白を無視したい場合は、strip()メソッドを使用して前後の空白を削除することができます。

以下の例を見てみましょう。

# 空白を含む入力
user_input = input("何か入力してください(空白でも可): ")
cleaned_input = user_input.strip()  # 前後の空白を削除
print("入力された内容:", cleaned_input)
何か入力してください(空白でも可):    Python   
入力された内容: Python

input()でのデータ型変換

数値入力を受け取る方法

input()関数を使用して数値を受け取る場合、入力されたデータは常に文字列型として扱われます。

そのため、数値として利用するためには型変換が必要です。

以下の例では、ユーザーから整数を入力として受け取ります。

# ユーザーから整数を入力として受け取る
number_input = input("整数を入力してください: ")
number = int(number_input)  # 整数に変換
print("入力された整数:", number)
整数を入力してください: 10
入力された整数: 10

int()やfloat()でのキャスト

input()で受け取った文字列を数値型に変換するためには、int()float()関数を使用します。

int()は整数に、float()は浮動小数点数に変換します。

以下の例を見てみましょう。

# 浮動小数点数を入力として受け取る
float_input = input("浮動小数点数を入力してください: ")
float_number = float(float_input)  # 浮動小数点数に変換
print("入力された浮動小数点数:", float_number)
浮動小数点数を入力してください: 3.14
入力された浮動小数点数: 3.14

複数のデータ型を同時に入力する方法

ユーザーから複数のデータを同時に入力させる場合、split()メソッドを使用して、スペースで区切られた複数の値を取得することができます。

以下の例では、整数と浮動小数点数を同時に入力します。

# 複数のデータを入力として受け取る
input_data = input("整数と浮動小数点数をスペースで区切って入力してください: ")
int_value, float_value = input_data.split()  # スペースで分割
int_value = int(int_value)  # 整数に変換
float_value = float(float_value)  # 浮動小数点数に変換
print("入力された整数:", int_value)
print("入力された浮動小数点数:", float_value)
整数と浮動小数点数をスペースで区切って入力してください: 5 2.71
入力された整数: 5
入力された浮動小数点数: 2.71

例外処理を使った安全な入力方法

ユーザーが不正なデータを入力した場合に備えて、例外処理を使用して安全に入力を受け取ることが重要です。

以下の例では、整数の入力を受け取る際に、ValueErrorをキャッチしてエラーメッセージを表示します。

# 安全な整数入力を受け取る
while True:
    try:
        number_input = input("整数を入力してください: ")
        number = int(number_input)  # 整数に変換
        break  # 正常に変換できたらループを抜ける
    except ValueError:
        print("無効な入力です。整数を入力してください。")
print("入力された整数:", number)
整数を入力してください: abc
無効な入力です。整数を入力してください。
整数を入力してください: 10
入力された整数: 10

このように、例外処理を用いることで、ユーザーが誤ったデータを入力した際にもプログラムがクラッシュせず、適切にエラーメッセージを表示することができます。

応用的な入力処理

複数行の入力を受け取る方法

Pythonのinput()関数は、通常1行の入力を受け取りますが、複数行の入力を受け取るためには、ループを使用して複数回input()を呼び出すことができます。

以下の例では、ユーザーが「終了」と入力するまで、複数行の入力を受け取ります。

# 複数行の入力を受け取る
lines = []
print("入力を終了するには「終了」と入力してください。")
while True:
    line = input("入力してください: ")
    if line == "終了":
        break
    lines.append(line)
print("入力された内容:")
for line in lines:
    print(line)
入力を終了するには「終了」と入力してください。
入力してください: こんにちは
入力してください: Python
入力してください: 終了
入力された内容:
こんにちは
Python

split()を使った複数の値の入力

ユーザーからスペースで区切られた複数の値を一度に入力させる場合、split()メソッドを使用することができます。

以下の例では、ユーザーが複数の整数を入力し、それをリストとして取得します。

# スペースで区切られた複数の整数を入力
input_data = input("整数をスペースで区切って入力してください: ")
numbers = input_data.split()  # スペースで分割
numbers = [int(num) for num in numbers]  # 整数に変換
print("入力された整数のリスト:", numbers)
整数をスペースで区切って入力してください: 1 2 3 4 5
入力された整数のリスト: [1, 2, 3, 4, 5]

map()を使った一括変換

map()関数を使用すると、リスト内のすべての要素に対して一括で変換を行うことができます。

以下の例では、ユーザーが入力したスペースで区切られた数値を一度に整数に変換します。

# スペースで区切られた数値を一括で整数に変換
input_data = input("整数をスペースで区切って入力してください: ")
numbers = list(map(int, input_data.split()))  # 一括変換
print("入力された整数のリスト:", numbers)
整数をスペースで区切って入力してください: 10 20 30
入力された整数のリスト: [10, 20, 30]

join()を使った入力データの結合

ユーザーからの入力データを結合して1つの文字列にする場合、join()メソッドを使用します。

以下の例では、リスト内の文字列をカンマで区切って結合します。

# 複数の文字列をカンマで結合
input_data = input("いくつかの単語をスペースで区切って入力してください: ")
words = input_data.split()  # スペースで分割
joined_string = ", ".join(words)  # カンマで結合
print("結合された文字列:", joined_string)
いくつかの単語をスペースで区切って入力してください: Python プログラミング
結合された文字列: Python, プログラミング

input()でのタイムアウト処理

input()関数にはタイムアウト機能が標準で備わっていませんが、signalモジュールを使用することで実現できます。

以下の例では、指定した時間内に入力がない場合にタイムアウトエラーを発生させます。

import signal
# タイムアウト用のハンドラ
def timeout_handler(signum, frame):
    raise TimeoutError
# タイムアウトを設定
signal.signal(signal.SIGALRM, timeout_handler)
signal.alarm(5)  # 5秒のタイムアウト
try:
    user_input = input("5秒以内に入力してください: ")
    signal.alarm(0)  # タイムアウトを解除
    print("入力された内容:", user_input)
except TimeoutError:
    print("タイムアウトしました。")

出力例(タイムアウトした場合):

5秒以内に入力してください: タイムアウトしました。

このように、input()関数を応用することで、さまざまな入力処理を行うことができます。

input()を使った実用例

名前と年齢を入力して挨拶を表示するプログラム

このプログラムでは、ユーザーに名前と年齢を入力してもらい、挨拶を表示します。

input()関数を使って、ユーザーからの入力を受け取ります。

# 名前と年齢を入力
name = input("あなたの名前を入力してください: ")
age = input("あなたの年齢を入力してください: ")
print(f"こんにちは、{name}さん!あなたは{age}歳ですね。")
あなたの名前を入力してください: 太郎
あなたの年齢を入力してください: 25
こんにちは、太郎さん!あなたは25歳ですね。

数値を入力して計算を行うプログラム

このプログラムでは、ユーザーに2つの数値を入力してもらい、その合計を計算して表示します。

数値の入力には型変換が必要です。

# 2つの数値を入力
num1 = input("1つ目の数値を入力してください: ")
num2 = input("2つ目の数値を入力してください: ")
sum_result = int(num1) + int(num2)  # 整数に変換して合計を計算
print(f"{num1} + {num2} = {sum_result}")
1つ目の数値を入力してください: 10
2つ目の数値を入力してください: 20
10 + 20 = 30

複数のデータを入力してリストに格納するプログラム

このプログラムでは、ユーザーに複数のデータをスペースで区切って入力してもらい、それをリストに格納します。

split()メソッドを使用して、入力を分割します。

# 複数のデータを入力
input_data = input("いくつかのデータをスペースで区切って入力してください: ")
data_list = input_data.split()  # スペースで分割してリストに格納
print("入力されたデータのリスト:", data_list)
いくつかのデータをスペースで区切って入力してください: Apple Banana Cherry
入力されたデータのリスト: ['Apple', 'Banana', 'Cherry']

入力された文字列を逆順に表示するプログラム

このプログラムでは、ユーザーに文字列を入力してもらい、その文字列を逆順に表示します。

スライスを使って逆順にすることができます。

# 文字列を入力
user_input = input("文字列を入力してください: ")
reversed_string = user_input[::-1]  # 逆順にスライス
print("逆順の文字列:", reversed_string)
文字列を入力してください: Python
逆順の文字列: nohtyP

これらの実用例を通じて、input()関数を使ったさまざまな入力処理の方法を学ぶことができます。

よくある質問

input()で数値を入力するとエラーが出るのはなぜ?

input()関数は、ユーザーからの入力を常に文字列として受け取ります。

したがって、数値を入力した場合でも、その値は文字列として扱われます。

もしそのまま数値として計算や処理を行おうとすると、型が一致しないためエラーが発生します。

例えば、int()float()を使って明示的に型変換を行わないと、計算ができません。

エラーを防ぐためには、入力を受け取った後に適切な型変換を行う必要があります。

# 整数を入力として受け取る場合
number_input = input("整数を入力してください: ")
number = int(number_input)  # 型変換を行う

input()で空白を入力した場合、どう処理される?

input()関数で空白を入力した場合、その空白は文字列として扱われます。

つまり、ユーザーが何も入力せずにEnterキーを押した場合、空の文字列("")が返されます。

空白を含む文字列を処理する場合は、strip()メソッドを使って前後の空白を削除することができます。

空白を無視したい場合は、入力後にチェックを行うことが重要です。

user_input = input("何か入力してください: ")
if user_input.strip() == "":
    print("空白の入力は無効です。")
else:
    print("入力された内容:", user_input)

input()で複数の値を一度に入力する方法は?

input()関数を使って複数の値を一度に入力する場合、ユーザーにスペースやカンマで区切って入力してもらい、split()メソッドを使用して分割することが一般的です。

これにより、入力された値をリストとして取得することができます。

以下のように実装できます。

# スペースで区切られた複数の値を入力
input_data = input("複数の値をスペースで区切って入力してください: ")
values = input_data.split()  # スペースで分割
print("入力された値のリスト:", values)

この方法を使うことで、ユーザーからの複数の入力を簡単に処理することができます。

まとめ

この記事では、Pythonのinput()関数を使用して、キーボードからの文字列入力を受け取る方法や、入力されたデータの型変換、複数行や複数値の入力処理について詳しく解説しました。

また、実用的なプログラム例を通じて、input()関数の活用方法を具体的に示しました。

これらの知識を活かして、実際のプログラムにおいてユーザーからの入力を効果的に処理し、よりインタラクティブなアプリケーションを作成してみてください。

  • URLをコピーしました!
目次から探す