Python | 文法の基本:input() の使い方

Python
スポンサーリンク

input() の概要(基本動作と戻り値)

input() は、ユーザーがキーボードで入力した1行を読み取り、文字列(str)として返します。プログラムはユーザーが Enter を押すまで待機します。戻り値は常に文字列なので、数値として使いたい場合は、int() や float() による型変換が必要です。入力前に表示する「案内文(プロンプト)」は、input(“案内文”) のように書くと自然です。

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

文字列で返ることの意味(型変換と前処理の重要性)

数値を扱うための型変換

input() の戻り値は文字列なので、数値計算をしたいときは型変換を行います。整数なら int()、小数を含むなら float() が基本です。変換に失敗すると例外(ValueError)が発生するため、ユーザー入力では try/except を併用すると安全に扱えます。

s = input("年齢を入力してください: ")  # 例: "20"
try:
    age = int(s)
    print(age >= 18)  # True/False を出力
except ValueError:
    print("整数で入力してください")
Python

前処理(strip と検証)の基本

ユーザー入力には前後の空白や想定外の文字が含まれがちです。strip() で前後空白を除去し、isdigit() などで簡易チェックを行うと、変換が安定します。小数や負数には isdigit() が向かないため、float() で例外捕捉する方が現実的です。

s = input("金額を入力してください(整数): ")
s = s.strip()
if s.isdigit():
    amount = int(s)
    print(f"税込: {amount + round(amount * 0.1)}")
else:
    print("整数のみ入力してください")
Python

プロンプトの工夫(入力意図を明確にする)

分かりやすい案内文と例

ユーザーが迷わないよう、「何を」「どの形式で」入力するかを短く明示します。例を添えるとさらに親切です。案内文はその場で表示されるため、print を使わずに済みます。

rating = input("満足度(1〜5の整数)を入力: 例)5  ")
try:
    score = int(rating.strip())
    if 1 <= score <= 5:
        print(f"評価ありがとうございます({score})")
    else:
        print("1〜5の範囲で入力してください")
except ValueError:
    print("整数で入力してください")
Python

入力の再試行ループ

不正値のときにやり直してもらうには、ループで囲みます。入力の検証、やり直し、正常値での脱出という流れが基本形です。

while True:
    s = input("割引率(0〜1の小数)を入力: ")
    try:
        rate = float(s.strip())
        if 0.0 <= rate <= 1.0:
            break
        print("0〜1の範囲で入力してください")
    except ValueError:
        print("数値で入力してください")
print(f"適用割引率: {rate}")
Python

複数値・複数行の入力(分割と終了条件)

1行に複数値を入力して分割

空白区切りやカンマ区切りでまとめて受け取り、split や split(“,”) で分割します。必要に応じて型変換を行い、要素数のチェックを忘れないようにします。

line = input("3科目の点数(空白区切り)を入力: 例)70 85 90  ")
parts = line.strip().split()
if len(parts) != 3:
    print("3つの数値を入力してください")
else:
    try:
        a, b, c = map(int, parts)
        avg = (a + b + c) / 3
        print(f"平均: {avg:.1f}")
    except ValueError:
        print("整数のみ入力してください")
Python

複数行の入力(空行で終了)

行ごとに読み取り、空行で終了するのが分かりやすい定番パターンです。strip() 後に空文字なら break します。

items = []
print("商品名を1行ずつ入力してください(空行で終了):")
while True:
    s = input().strip()
    if not s:
        break
    items.append(s)
print(f"登録件数: {len(items)} / {items}")
Python

例外と中断の扱い(EOFError・KeyboardInterrupt)

想定外の終了(EOFError)と中断(Ctrl+C)

標準入力が閉じられている環境やパイプでの終端では、input() が EOFError を送出します。ユーザーが Ctrl+C を押すと KeyboardInterrupt になります。どちらも丁寧にメッセージを出して終了できると、体験が良くなります。

try:
    s = input("コマンドを入力してください: ")
    print(f"入力: {s}")
except EOFError:
    print("入力が終了しました(EOF)")
except KeyboardInterrupt:
    print("\n中断されました(Ctrl+C)")
Python

安全な入力関数にまとめる

例外処理や検証を関数化すると、再利用性が上がります。責務を「読み取り」「検証」「変換」に分けるのがコツです。

def read_int(prompt: str, *, min_value=None, max_value=None) -> int | None:
    try:
        s = input(prompt).strip()
        value = int(s)
        if min_value is not None and value < min_value:
            print(f"{min_value}以上で入力してください")
            return None
        if max_value is not None and value > max_value:
            print(f"{max_value}以下で入力してください")
            return None
        return value
    except ValueError:
        print("整数で入力してください")
    except EOFError:
        print("入力が終了しました")
    except KeyboardInterrupt:
        print("\n中断されました")
    return None

n = read_int("人数(1〜10): ", min_value=1, max_value=10)
Python

実用例題(初心者がつまずきやすい点に効く)

例題1:安全な年齢入力と条件分岐

while True:
    s = input("年齢を入力してください: ")
    try:
        age = int(s.strip())
        break
    except ValueError:
        print("整数で入力してください")
print("成人です" if age >= 18 else "未成年です")
Python

例題2:税込レシート(数値変換と表示整形)

price = int(input("単価(円): ").strip())
qty = int(input("数量: ").strip())
rate = float(input("税率(例: 0.1): ").strip())

subtotal = price * qty
tax = round(subtotal * rate)
total = subtotal + tax

print(f"小計: ¥{subtotal:,} / 税: ¥{tax:,} / 合計: ¥{total:,}")
Python

例題3:カンマ区切りの一括入力で集計

line = input("金額をカンマ区切りで入力: 例)120,340,560  ")
parts = [p.strip() for p in line.split(",")]
total = 0
for p in parts:
    try:
        total += int(p)
    except ValueError:
        print(f"整数でない値をスキップ: {p}")
print(f"合計: {total}")
Python

例題4:空行終了のメモ取り

print("メモを入力(空行で終了):")
lines = []
while True:
    s = input()
    if not s.strip():
        break
    lines.append(s)
print("----")
print("\n".join(lines))
Python

まとめ(押さえるべき重要ポイント)

input() は「常に文字列を返す」ため、前処理(strip)と型変換(int/float)をセットで考えるのが基本です。失敗は前提として try/except を用意し、案内文で入力形式を明確化、必要なら再試行ループで正しい値に導きます。複数値は split、複数行は空行終了が定番。EOFError と KeyboardInterrupt を丁寧に扱うと、実行環境が変わっても安定して動かせます。入力・検証・変換の責務分離を習慣化すれば、初心者でも堅牢な対話型スクリプトを書けるようになります。

タイトルとURLをコピーしました