競技プログラミングでよく使うPythonの入力・出力

スポンサーリンク

最近競技プログラミングの問題をPythonで解いているので、よくある標準入力と標準出力関連のコードをメモ代わりに並べてみます。

入力

文字列を1行入力

s = input()

ちなみにinput()は末尾の改行を除く仕様が入っているのでrstrip()をかける必要はありません。

整数を1行から1つ入力

n = int(input())

1行内のスペースで区切られた複数の文字列を個別の変数に入力

a, b, c = input().split()

入力の数がわかっている場合のやつ。
split()は引数sepを与えると区切り文字をスペース以外にもできます。
4. 組み込み型 — Python 3.6.5 ドキュメント

1行内のスペースで区切られた複数の整数を個別の変数に入力

x, y, z = map(int, input().split())

map()で各要素を数値に変換します。

1行内のスペースで区切られた複数の文字列をリストに入力

l = input().split()

1行内のスペースで区切られた複数の整数をリストに入力

l = list(map(int, input().split()))

map()までだと帰ってくるオブジェクトはmap型のイテレータなので要素に[]アクセスをしようとしたりするとエラーになります。なのでリストとして扱い時はlist()で明示的に変換。

改行で区切られた複数行の文字列をリストに入力

l = [input() for _ in range(N)]

Nの部分は個数を入れてください。

改行で区切られた複数行の整数をリストに入力

l = [int(input()) for _ in range(N)]

Nの部分は個数を入れてください。

出力

値を出力して改行

print('hoge')

改行したくない場合はprint(‘hoge’, end=”)のように引数endを加えます。
2. 組み込み関数 — Python 3.6.5 ドキュメント

いくつかの値をスペース区切りで出力

print('foo', 'bar')

print()に複数の引数を与えるとスペース区切りで出力します。
区切り文字を変えたい場合は引数sepを指定します。

文字列のリストをスペース区切りで連結して出力

print(' '.join(l))

整数のリストをスペース区切りで連結した文字列にして出力

print(' '.join(map(str, l)))

中身が文字列でない場合、一旦各要素にstrを通してあげないとエラーになります。