【Python】キーボードからデータを受け取る方法(sys.stdin.readlines、input関数)

Pythonのsys.stdin.readlines、input関数などを用いてキーボードからデータを受け取る(標準入力)方法を初心者向けに解説します。

標準入力(1行の入力)

標準入力とは、プログラムが外部からデータを受け取る仕組みです。
Pythonでは、標準ライブラリに含まれる「sysモジュール」や「input()」を使ってキーボードから入力を受け取ることができます。

以下は、入力したデータ(1行)を受け取って表示する例です。

import sys

print("勇者ぴこりの冒険ログを1行入力してください >")
log = sys.stdin.readline()

print("=== 冒険の記録 ===")
print(f"{log}")
勇者ぴこりの冒険ログを1行入力してください >
エクスカリバーを手に入れた! ← キーボードで入力
=== 冒険の記録 ===
エクスカリバーを手に入れた!

複数行の標準入力(リストに格納)

複数行の入力をまとめて受け取る場合は、標準ライブラリに含まれる sys.stdin.readlines() を使います。
返り値は「リスト」で、各行が要素として格納されます。

import sys

print("勇者ぴこりの冒険ログを複数行入力してください(終了は Ctrl+Z / Ctrl+D) >")
logs = sys.stdin.readlines()

print("=== 冒険の記録 ===")
print(logs)
勇者ぴこりの冒険ログを複数行入力してください(終了は Ctrl+Z / Ctrl+D) >
村を出発した
スライムを倒した
^Z
=== 冒険の記録 ===
[‘村を出発した\n’, ‘スライムを倒した\n’]
  • Windows: 入力終了は Ctrl + Z → Enter
  • Linux / Mac: 入力終了は Ctrl + D

各要素には改行コード \n が含まれます。不要な場合は、以下のように strip() メソッドで取り除けます。

import sys

print("勇者ぴこりの冒険ログを複数行入力してください(終了は Ctrl+Z / Ctrl+D) >")
logs = sys.stdin.readlines()

print("=== 冒険の記録 ===")
for line in logs:
    print(line.strip())

複数行の標準入力(行数指定)

Pythonの input() 関数は1行ずつ入力を受け取ります。
複数行を受け取りたい場合は、繰り返し呼び出す必要があります

以下の例では、最初の行で「行数」を入力し、その回数分だけ input() を繰り返しています。

# 行数を取得
print("勇者ぴこりの冒険ログの行数を入力してください >")
num_logs = int(input())

# 1行ずつ取り出し
for i in range(num_logs):
    log = input()
    print(f"ログ{i+1}: {log}")
勇者ぴこりの冒険ログの行数を入力してください >
2
村を出発した
ログ1: 村を出発した
剣を手に入れた
ログ2: 剣を手に入れた
`input()` だけでは「いつ入力が終わるか」を自動で判定できません。
そのため「行数を先に指定する」か「EOF(Ctrl+Z / Ctrl+D)」を使う必要があります。

複数行の標準入力(文字列に格納)

sys.stdin.read() を使うと、複数行の入力を 1つの文字列 としてまとめて受け取れます。

import sys

print("勇者ぴこりの冒険ログをまとめて入力してください(終了は Ctrl+Z / Ctrl+D) >")
story = sys.stdin.read()

print("=== 冒険の記録 ===")
print(story)
勇者ぴこりの冒険ログをまとめて入力してください(終了は Ctrl+Z / Ctrl+D) >
洞窟に入った
ドラゴンと遭遇した
^Z
=== 冒険の記録 ===
洞窟に入った
ドラゴンと遭遇した
  • Windows: 入力終了は Ctrl + Z
  • Linux / Mac: 入力終了は Ctrl + D

関連ページ(もっと学びたい人へ)

Pythonの基礎から応用例まで、以下ページから学ぶことができます。

Python超入門速報
この記事を書いた人
西住技研

プログラミング言語「Python」を研究、仕事、趣味でデータ分析や作業自動化などに活用してきたノウハウを情報発信しています。
筆者の詳しいプロフィールやお問合せはこちらのページまで。
YoutubeX(旧Twitter)でも情報発信中です!

西住技研をフォローする
Python基礎

コメント

  1. 匿名 より:

    readlinesの終了は「ctrl+D」で出来ました。
    ctrl+zではundoになります。