Pythonでプログラムを作るとき、ユーザーからのキーボード入力を扱えるようになると、電卓やゲーム、診断ツールなど、対話型のアプリを簡単に作れるようになります。
本記事ではPythonのinput関数を中心に、キーボード入力の基本から、実践的な活用例までを、図解と動くサンプルコード付きでていねいに解説します。
Pythonでのキーボード入力の基本
Pythonでキーボード入力を受け取る方法とは

Pythonでは、キーボード入力は基本的にinput関数を使って受け取ります。
ユーザーがキーボードで文字を打ち、Enterキーを押すと、その1行分の文字列がプログラムに渡されます。
入力の基本的な流れは次のようになります。
- プログラムが
inputを呼び出す - ユーザーがキーボードから文字を入力し、Enterを押す
- 入力された1行分のテキストが
str(文字列)として戻り値になる - 戻り値を変数に代入して、その後の処理に使う
この一連の流れを押さえておけば、あとは「どのタイミングで」「どんなメッセージと一緒に」入力を求めるかを設計していくだけです。
input関数とは

Python3のinput関数の基本仕様は次の通りです。
- 引数: 表示したいメッセージ(文字列、任意)
- 戻り値: ユーザーが入力した1行分の文字列
たとえば、次のように書きます。
# ユーザーに名前を聞いて、それを表示する簡単な例
# input関数でキーボード入力を受け取り、変数 name に代入
name = input("あなたの名前を入力してください: ")
# 受け取った名前を使ってメッセージを表示
print("こんにちは、" + name + "さん!")
あなたの名前を入力してください: 山田
こんにちは、山田さん!
このようにinputは「ユーザーから1行の文字列を受け取る関数」だと理解しておくと、後の型変換や応用にもスムーズに進めます。
Python2のraw_inputとの違い

Python2系では、キーボード入力にraw_inputという関数が使われていました。
概念を整理すると、次のような対応関係があります。
- Python2
raw_input: 文字列として入力を受け取るinput: 入力を式として評価してしまう(安全でない)
- Python3
input: 文字列として入力を受け取る(旧raw_inputの役割)raw_input: 廃止
そのため、Python3を使う場合はinputだけ覚えれば十分です。
Python2用の古い記事などにraw_inputが登場していても、Python3ではinputに読み替えればよいと考えてください。
input関数の基本的な使い方
文字列を入力する

最も基本的な使い方は、文字列をそのまま受け取って使うことです。
# お気に入りの言語を聞いて、そのまま表示する例
# キーボードから文字列を1行入力してもらう
favorite_lang = input("好きなプログラミング言語を教えてください: ")
# 入力された文字列をそのまま使ってメッセージを表示
print("あなたが好きな言語は「" + favorite_lang + "」ですね。")
この段階では、数値に見える入力であっても、中身はあくまで文字列です。
たとえば20と入力しても"20"という文字列として扱われる点に注意してください。
プロンプトメッセージを表示する方法

プロンプトメッセージとは、入力の前に画面に表示される案内文のことです。
input関数の引数に文字列を渡すと、それがそのままプロンプトとして表示されます。
# 単純なプロンプトメッセージの例
age_text = input("あなたの年齢を入力してください(数字): ")
print("入力された年齢(文字列のまま): " + age_text)
プロンプトには、「何を、どの形式で入力してほしいのか」を明確に書くことが大切です。
たとえば、次のような工夫が考えられます。
- 入力形式を明示する(例:
(数字)、(y/n)、(カンマ区切り)など) - 必須入力かどうかを書く
- 単位を書く(例:
(cm)、(kg))
ユーザーにとってわかりやすいプロンプトは、そのままプログラムの使いやすさにつながります。
改行と空白の扱い

input関数は、ユーザーがEnterキーを押すまでの1行分を、前後の空白も含めて文字列として取得します。
いくつかポイントがあります。
- 行の途中にスペースがある場合、そのスペースも文字として含まれる
- 先頭や末尾のスペースも、そのまま残る
- Enterキーは含まれない(つまり改行文字は含まれない)
次の例で確認してみましょう。
# 入力した文字列の長さを表示して、空白もカウントされることを確認する例
text = input("文字を入力してください(空白を含めてOK): ")
print("入力内容: 「" + text + "」")
print("文字数(len):", len(text))
文字を入力してください(空白を含めてOK): hello world
入力内容: 「 hello world 」
文字数(len): 15
先頭と末尾に空白があるため、"hello world"(11文字)より長くなっていることがわかります。
前後の余計な空白を取り除きたい場合はstrip()メソッドを使うのが定番です。
# strip()で前後の空白を取り除く例
raw_text = input("空白付きの文字列を入力してみてください: ")
clean_text = raw_text.strip() # 前後の空白文字(スペースや改行、タブなど)を削除
print("元の入力: 「" + raw_text + "」(長さ:", len(raw_text), ")")
print("strip後: 「" + clean_text + "」(長さ:", len(clean_text), ")")
input関数と型変換の実例
数値入力を受け取る

input関数の戻り値は必ず文字列(str)です。
数値として計算したい場合は、自分で型変換を行う必要があります。
代表的な変換は次の2つです。
- 整数にしたい:
int(文字列) - 小数を扱いたい:
float(文字列)
サンプルコードで確認しましょう。
# 身長と体重からBMIを計算する簡単な例
# 数値の入力には型変換が必要になります
# inputで文字列として受け取る
height_text = input("身長を入力してください(cm): ")
weight_text = input("体重を入力してください(kg): ")
# 数値に変換する
height = float(height_text) # 小数もありえるのでfloat
weight = float(weight_text)
# cmをmに変換
height_m = height / 100.0
# BMIを計算
bmi = weight / (height_m ** 2)
print("あなたのBMIは", bmi, "です。")
入力が"170"のような文字列のままだと計算できないため、float()やint()で数値に変換してから利用する、という流れを習慣にしておきましょう。
複数の値を一度に入力

1回のinputで、「空白区切り」や「カンマ区切り」で複数の値を入力してもらい、それを分解して使うこともよくあります。
空白区切りの例
# 空白区切りで「身長 体重」をまとめて入力してもらう例
line = input("身長(cm)と体重(kg)を空白区切りで入力してください: ")
# 例: 170 65
# split()で空白区切りに分割して、2つの変数に展開
height_text, weight_text = line.split()
height = float(height_text)
weight = float(weight_text)
height_m = height / 100.0
bmi = weight / (height_m ** 2)
print("身長:", height, "cm, 体重:", weight, "kg")
print("BMI:", bmi)
カンマ区切りの例
# カンマ区切りで数値リストを入力してもらい、平均値を計算する例
line = input("テストの点数をカンマ区切りで入力してください(例: 80,75,90): ")
# カンマで分割してリストにする
parts = line.split(",")
# それぞれをintに変換して新しいリストを作成
scores = []
for p in parts:
score = int(p.strip()) # strip()で前後の空白も除去
scores.append(score)
# 平均値を計算
avg = sum(scores) / len(scores)
print("入力された点数:", scores)
print("平均点:", avg)
このように、1行で複数の値をもらう場合はsplit()と組み合わせるのが定番パターンです。
真偽値やリストへの変換のコツ

真偽値(bool)への変換
Pythonにはbool()という関数がありますが、文字列に対してbool("yes")のように使っても、直感的な真偽値変換にはなりません。
空でない文字列はすべてTrueになってしまうためです。
そのため、自分で「yesならTrue、noならFalse」というルールを実装するのが現実的です。
# yes / y でTrue, それ以外でFalseとみなす例
answer = input("続けて処理を行いますか?(y/n): ")
# 小文字にしてから判定することで、Y, Yes, YES などもまとめて扱える
normalized = answer.strip().lower()
if normalized in ("y", "yes"):
flag = True
else:
flag = False
print("フラグ値:", flag)
リスト(list)への変換
複数の入力値をリストとして扱いたい場合も、基本はsplit()と型変換を組み合わせます。
# 好きなフルーツをカンマ区切りで入力してもらい、リストにする例
line = input("好きなフルーツをカンマ区切りで入力してください: ")
# カンマ区切りで分割し、前後の空白を取り除いたリストを作成
fruits = [item.strip() for item in line.split(",")]
print("あなたの好きなフルーツ一覧:", fruits)
print("個数:", len(fruits))
このように、「input → 文字列 → 分割 → 型変換 → リスト化」という一連の流れをパターンとして身につけておくと、さまざまな入力形式に柔軟に対応できます。
実践的なinput関数の活用例
メニュー選択プログラムの作成例

コンソールアプリでよくあるのが、番号を入力してメニューを選ぶタイプのプログラムです。
inputとif/elifを組み合わせるだけで簡単に作成できます。
# 簡単なメニュー選択プログラムの例
def show_menu():
print("==== メニュー ====")
print("1: 足し算")
print("2: 引き算")
print("3: 終了")
print("=================")
# メイン処理
show_menu()
choice = input("番号を入力してください: ")
if choice == "1":
print("足し算を選択しました。")
a = int(input("1つ目の数値を入力してください: "))
b = int(input("2つ目の数値を入力してください: "))
print("結果:", a + b)
elif choice == "2":
print("引き算を選択しました。")
a = int(input("1つ目の数値を入力してください: "))
b = int(input("2つ目の数値を入力してください: "))
print("結果:", a - b)
elif choice == "3":
print("終了します。")
else:
print("不正な入力です。1〜3の番号を入力してください。")
メニュー選択では「どの文字列がどの選択肢に対応しているか」を明確に決めておくことが重要です。
上の例では、"1"や"2"といった文字列を使って分岐しています。
ループとinputを組み合わせた対話型処理

実用的なプログラムでは、ユーザーが終了を選ぶまで、何度も入力と処理を繰り返す形が一般的です。
これはwhileループと組み合わせることで実現できます。
# 簡単な繰り返し電卓 (足し算のみ) の例
# 'q'が入力されるまで繰り返します
print("足し算電卓です。'q'を入力すると終了します。")
while True:
text = input("2つの数値を空白区切りで入力してください(例: 3 5): ")
if text.strip().lower() == "q":
print("終了します。")
break # whileループを抜ける
# 入力を分割
try:
a_text, b_text = text.split()
a = float(a_text)
b = float(b_text)
except ValueError:
print("入力形式が正しくありません。例のように2つの数値を入力してください。")
continue # 先頭のinputへ戻る
result = a + b
print("結果:", result)
このような構造は、メニュー付きツールやチャット風のアプリなど、多くの対話型プログラムの基本パターンになります。
例外処理で安全に入力を受け取る方法

数値入力では、ユーザーが誤って文字を入力してしまうケースを考慮する必要があります。
そのままint()やfloat()に渡すとValueErrorが発生し、プログラムが強制終了してしまいます。
これを避けるにはtry/exceptによる例外処理を使います。
# 安全に整数を入力してもらう関数の例
# 正しい整数が入力されるまで、繰り返し再入力を求めます
def input_int(prompt):
while True:
text = input(prompt)
try:
value = int(text)
return value # 正しく変換できたら値を返して終了
except ValueError:
print("整数を入力してください。")
# 関数を使ってみる
age = input_int("年齢を整数で入力してください: ")
print("あなたの年齢は", age, "歳ですね。")
このように「入力 → 型変換 → 失敗したらメッセージを出して再入力」という流れを1つの関数にまとめておくと、プログラム全体の安全性がぐっと高まります。
inputとprintで作る簡単な対話型アプリ

最後に、inputとprintだけで作るシンプルな対話型アプリの例として、簡単な「気分診断」プログラムを紹介します。
# 簡単な気分診断アプリの例
# inputとprintを組み合わせた対話型プログラムです
def ask_name():
name = input("あなたの名前を教えてください: ").strip()
if not name:
name = "ななしさん"
return name
def ask_mood():
print("今の気分を数字で教えてください。")
print("1: とても悪い")
print("2: 少し悪い")
print("3: ふつう")
print("4: 少し良い")
print("5: とても良い")
while True:
text = input("1〜5の数字で入力してください: ")
try:
mood = int(text)
if 1 <= mood <= 5:
return mood
else:
print("1〜5の範囲で入力してください。")
except ValueError:
print("数字を入力してください。")
def judge_mood(name, mood):
# 気分の値に応じてメッセージを切り替える
if mood <= 2:
message = "今日はあまり調子が良くなさそうですね。無理せず休みましょう。"
elif mood == 3:
message = "ふつうの日も大事です。マイペースでいきましょう。"
elif mood == 4:
message = "良い感じですね!この調子で進めていきましょう。"
else: # mood == 5
message = "最高の気分ですね!周りにも良い影響を与えられそうです。"
print()
print("=== 診断結果 ===")
print(name + "さん:", message)
def main():
print("気分診断アプリへようこそ。")
name = ask_name()
mood = ask_mood()
judge_mood(name, mood)
if __name__ == "__main__":
main()
気分診断アプリへようこそ。
あなたの名前を教えてください: 佐藤
今の気分を数字で教えてください。
1: とても悪い
2: 少し悪い
3: ふつう
4: 少し良い
5: とても良い
1〜5の数字で入力してください: 4
=== 診断結果 ===
佐藤さん: 良い感じですね!この調子で進めていきましょう。
このように、inputでユーザーから情報を集め、printでフィードバックするだけで、立派な対話型アプリを作ることができます。
あとはロジックを増やしたり、メッセージを工夫したりして、自由に発展させてみてください。
まとめ
本記事では、Pythonでキーボード入力を扱う基本であるinput関数について、文字列入力から数値やリストへの変換、メニューやループを使った実践例、例外処理を用いた安全な入力方法まで、一通り解説しました。
「inputで文字列を受け取る → 必要に応じて型変換する → 分岐や計算に利用する」という流れをマスターすれば、コンソール上で動く対話型プログラムを自在に作れるようになります。
小さなスクリプトから試し、少しずつ機能を追加しながら、自分なりのアプリ作りに発展させてみてください。
