Python 2.x で入力を取得する方法をご紹介します。
Python では、入力を取得する方法が大きく分けて 2 種類あります。
raw_input()
sys.stdin.readline() ```` readlines() ```` read()
以下、それぞれについて順に見ていきます。
raw_input()
raw_input()
はコマンドラインからの入力を取得するための関数です。組み込みの関数なので、ライブラリを import
しなくてもそのまま使えます。
input_line1 = raw_input()
print input_line1 + " is written"
# => 入力された文字列 is written
raw_input()
で得られる文字列は、入力された文字列から自動的に改行文字を取り除いてくれます。
ちなみに Python 3 ではこの raw_input()
は廃止され、代わりに input()
という別の名前の組み込み関数が用意されています。
sys.stdin.readline() ```` readlines() ```` read()
sys.stdin.readline()
のシリーズは、 raw_input()
よりも広い用途で標準入力を取得するための関数群です。
sys
ライブラリを import
することで使えるようになります。
readline() ```` readlines() ```` read()
のちがいを以下順に見ていきます。
import sys
input_line2 = sys.stdin.readline()
print input_line2 + " is writen"
# => 入力された文字列
# is written
readline()
は標準入力から1行取得するための関数です。 raw_input()
とのちがいは、 raw_input()
が改行文字を自動的に削除するのに対し、 readline()
は標準入力に与えられた内容をそのまま取得してくる点です。
input_lines1 = sys.stdin.readlines()
print input_lines1
# => 入力された文字列を1行ずつ格納したリスト
readlines()
は標準入力から複数行取得するための関数です。戻り値はリストで、入力された文字列が1行ずつ要素として格納されています。こちらも改行文字の自動削除はありません。
input_lines2 = sys.stdin.read()
print input_lines2
# => 入力された文字列
read()
は標準入力から複数行取得するための関数です。 readlines()
が結果を行単位で分割してリストで返すのに対して、 read()
は結果をそのまま1つの文字列として取得します。
それぞれ少しずつ挙動がちがうので、用途にあわせて使い分けるとよいかと思います。
以上です。
余談ですが、指定した回数だけ入力を受け付けたいときなんかは
[raw_input() for _ in range(3)]
などと書くと Python らしく(?)書くことができたりします。
参考