(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に入力していく方法。後者はリスト内包表記を使って二次元配列を作る方法。場面によって使い分ける。