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 を丁寧に扱うと、実行環境が変わっても安定して動かせます。入力・検証・変換の責務分離を習慣化すれば、初心者でも堅牢な対話型スクリプトを書けるようになります。
