Python3での標準入力のまとめです。
競技プログラミングなどで使えるメモ書きの意味も込めてです。
基本はinput()
標準入力はinput関数を用います。input()は入力された文字を文字列で扱うので、数字を扱う場合は型変換が必要です。
標準入力のまとめ
S (文字列)
入力
\(S\)コード
S = input()
または、型を明確にするために
S = str(input())
と書くこともできます。
x (整数)
入力
\(x\)コード
x = int(input())
f (小数)
入力
\(f\)コード
f = float(input())
x y (一列に複数の入力)
入力
\(x \quad y\)コード(x, yが整数の場合)
x, y = map(int, input().split())
もし入力が複数の文字列
\(i \quad j \quad k \)の場合、
i, j, k = map(str, input().split())
とすれば良い。
入力が小数の時は、int、strだった部分をfloatにする。
A1, A2, …, An(横一列の配列)
入力
\( A_1, A_2, \dots , A_{n} \)コード(Aiが整数の場合)
A = [int(i) for i in input().split()]
Aiが文字列の場合はint(i)の部分をstr(i)にするか、iにすればよいです。
コード(Aiが文字列の場合)
A = [str(i) for i in input().split()]
A = [i for i in input().split()]
コード上では、配列AはA[0], A[1], …, A[n-1]なので注意が必要です。
B1, B2, …, Bn (縦一列の配列)
入力
\( B_1 \\ B_2 \\ \vdots \\ B_n \)コード(Biが整数の場合)
B = [int(input()) for i in range(n)]
例えば、入力が
\( N \\ B_0 \\ B_1 \\ \vdots \\ B_{N-1} \)の場合は、コードは
N = int(input())
B = [int(input()) for i in range(N)]
となります。
Biが文字列の場合はint(input())をstr(input())かinput()に、小数の場合はfloat(input())にします。
2次元配列の入力
入力
\( x_1 \quad y_1 \quad z_1 \\ \vdots \\ x_N \quad y_N \quad z_N \)コード
data = [list(map(int, input().split())) for _ in range(N)]
ここでは、
data[0] == [x1, y1, z1]
となります。
複数の問題を解く場合などでこの形式が与えられた場合には、
for i in range(N):
x, y, z = map(int, input().split())
# 何かの処理
とすることも多いです。
入力が以下のような場合も同じコードが使えます。
入力
\( x_{0,0} \quad x_{0,1} \dots x_{0, K-1} \\ \vdots \quad \ddots \\ x_{N-1,0} \quad x_{N-1,1} \dots x_{N-1, K-1} \)コード
data = [list(map(int, input().split())) for _ in range(N)]
まとめ
これらを組み合わせた入力の場合には、コードを順番に書くことで順番に処理していきます。
例えば入力が
\( S \\ N \quad x \quad y \quad z \\ B_1 \\ B_2 \\ \vdots \\ B_N \)の場合(ただし、Sは文字列で、それ以外が整数)は、コードは
S = input()
N, x, y, z = map(int, input().split())
B = [int(input(i) for i in range(N)]
と書けば良いです。
これまでに書いた標準入力が扱えれば、競技プログラミングでの標準入力は大体問題なく出来るはずです。