閉じる

Pythonでキーボード入力する方法まとめ|input関数の使い方と実例集

Pythonでプログラムを作るとき、ユーザーからのキーボード入力を扱えるようになると、電卓やゲーム、診断ツールなど、対話型のアプリを簡単に作れるようになります。

本記事ではPythonのinput関数を中心に、キーボード入力の基本から、実践的な活用例までを、図解と動くサンプルコード付きでていねいに解説します。

Pythonでのキーボード入力の基本

Pythonでキーボード入力を受け取る方法とは

Pythonでは、キーボード入力は基本的にinput関数を使って受け取ります

ユーザーがキーボードで文字を打ち、Enterキーを押すと、その1行分の文字列がプログラムに渡されます。

入力の基本的な流れは次のようになります。

  1. プログラムがinputを呼び出す
  2. ユーザーがキーボードから文字を入力し、Enterを押す
  3. 入力された1行分のテキストがstr(文字列)として戻り値になる
  4. 戻り値を変数に代入して、その後の処理に使う

この一連の流れを押さえておけば、あとは「どのタイミングで」「どんなメッセージと一緒に」入力を求めるかを設計していくだけです。

input関数とは

Python3のinput関数の基本仕様は次の通りです。

  • 引数: 表示したいメッセージ(文字列、任意)
  • 戻り値: ユーザーが入力した1行分の文字列

たとえば、次のように書きます。

Python
# ユーザーに名前を聞いて、それを表示する簡単な例

# 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関数の基本的な使い方

文字列を入力する

最も基本的な使い方は、文字列をそのまま受け取って使うことです。

Python
# お気に入りの言語を聞いて、そのまま表示する例

# キーボードから文字列を1行入力してもらう
favorite_lang = input("好きなプログラミング言語を教えてください: ")

# 入力された文字列をそのまま使ってメッセージを表示
print("あなたが好きな言語は「" + favorite_lang + "」ですね。")

この段階では、数値に見える入力であっても、中身はあくまで文字列です。

たとえば20と入力しても"20"という文字列として扱われる点に注意してください。

プロンプトメッセージを表示する方法

プロンプトメッセージとは、入力の前に画面に表示される案内文のことです。

input関数の引数に文字列を渡すと、それがそのままプロンプトとして表示されます。

Python
# 単純なプロンプトメッセージの例

age_text = input("あなたの年齢を入力してください(数字): ")

print("入力された年齢(文字列のまま): " + age_text)

プロンプトには、「何を、どの形式で入力してほしいのか」を明確に書くことが大切です。

たとえば、次のような工夫が考えられます。

  • 入力形式を明示する(例: (数字)(y/n)(カンマ区切り) など)
  • 必須入力かどうかを書く
  • 単位を書く(例: (cm)(kg))

ユーザーにとってわかりやすいプロンプトは、そのままプログラムの使いやすさにつながります。

改行と空白の扱い

input関数は、ユーザーがEnterキーを押すまでの1行分を、前後の空白も含めて文字列として取得します

いくつかポイントがあります。

  • 行の途中にスペースがある場合、そのスペースも文字として含まれる
  • 先頭や末尾のスペースも、そのまま残る
  • Enterキーは含まれない(つまり改行文字は含まれない)

次の例で確認してみましょう。

Python
# 入力した文字列の長さを表示して、空白もカウントされることを確認する例

text = input("文字を入力してください(空白を含めてOK): ")

print("入力内容: 「" + text + "」")
print("文字数(len):", len(text))
実行結果
文字を入力してください(空白を含めてOK):   hello world  
入力内容: 「  hello world  」
文字数(len): 15

先頭と末尾に空白があるため、"hello world"(11文字)より長くなっていることがわかります。

前後の余計な空白を取り除きたい場合はstrip()メソッドを使うのが定番です。

Python
# 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(文字列)

サンプルコードで確認しましょう。

Python
# 身長と体重から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で、「空白区切り」や「カンマ区切り」で複数の値を入力してもらい、それを分解して使うこともよくあります。

空白区切りの例

Python
# 空白区切りで「身長 体重」をまとめて入力してもらう例

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)

カンマ区切りの例

Python
# カンマ区切りで数値リストを入力してもらい、平均値を計算する例

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」というルールを実装するのが現実的です。

Python
# 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()と型変換を組み合わせます。

Python
# 好きなフルーツをカンマ区切りで入力してもらい、リストにする例

line = input("好きなフルーツをカンマ区切りで入力してください: ")

# カンマ区切りで分割し、前後の空白を取り除いたリストを作成
fruits = [item.strip() for item in line.split(",")]

print("あなたの好きなフルーツ一覧:", fruits)
print("個数:", len(fruits))

このように、「input → 文字列 → 分割 → 型変換 → リスト化」という一連の流れをパターンとして身につけておくと、さまざまな入力形式に柔軟に対応できます。

実践的なinput関数の活用例

メニュー選択プログラムの作成例

コンソールアプリでよくあるのが、番号を入力してメニューを選ぶタイプのプログラムです。

inputif/elifを組み合わせるだけで簡単に作成できます。

Python
# 簡単なメニュー選択プログラムの例

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ループと組み合わせることで実現できます。

Python
# 簡単な繰り返し電卓 (足し算のみ) の例
# '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による例外処理を使います。

Python
# 安全に整数を入力してもらう関数の例
# 正しい整数が入力されるまで、繰り返し再入力を求めます

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だけで作るシンプルな対話型アプリの例として、簡単な「気分診断」プログラムを紹介します。

Python
# 簡単な気分診断アプリの例
# 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で文字列を受け取る → 必要に応じて型変換する → 分岐や計算に利用する」という流れをマスターすれば、コンソール上で動く対話型プログラムを自在に作れるようになります。

小さなスクリプトから試し、少しずつ機能を追加しながら、自分なりのアプリ作りに発展させてみてください。

クラウドSSLサイトシールは安心の証です。

URLをコピーしました!