(Python3)競プロの入力

Python3でAtCoderなど競プロをやる人向け
入力を受け取る方法についてのまとめです。これらを覚えておけばほとんど場合の入力に対応できます。

〇文字列を受け取る

abc

s=input()


〇ひとつの整数を受け取る

3

n=int(input())


〇横に並んだ複数の文字列を受け取る

abc arc agc

s,t,u=input().split()
li=input().split()

前者は3つの変数s、t、uを用意してabc、arc、agcを受け取っているのに対し、後者はリストliを用意してまとめて受け取っている。場面によって使い分ける。

〇横に並んだ複数の整数を受け取る

1 2 3

a,b,c=map(int,input().split())
li=list(map(int,input().split()))

前者は3つの変数a、b、cを用意して1、2、3を受け取っているのに対し、後者はリストliを用意してまとめて受け取っている。場面によって使い分ける。

〇縦に並んだ複数の文字列を受け取る
例(文字列の数である3が先頭に与えられる)
3
abc
arc
agc

n=int(input())
li=[input() for i in range(n)]

nは文字列の数である3を受け取っている。そしてリストliを用意し、リスト内包表記を使って3つの文字列をまとめて受け取っている。

〇縦に並んだ複数の整数を受け取る
例(整数の数である3が先頭に与えられる)
3
100
200
300

n=int(input())
li=[int(input()) for i in range(n)]

nは文字列の数である3を受け取っている。そしてリストliを用意し、リスト内包表記を使って3つの整数をまとめて受け取っている。

〇複数列、複数行の整数を受け取る
例(行数である3が先頭に与えられる)
3
100 200
300 400
500 600

n=int(input())
for i in range(n):
    a,b=map(int,input().split())
n=int(input())
li=[list(map(int,input().split())) for i in range(n)]

前者はfor文を回して変数a、bに入力していく方法。後者はリスト内包表記を使って二次元配列を作る方法。場面によって使い分ける。