0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

paizaの標準入力問題でつまいづいた

Posted at

はじめに

paizaの標準入力の問題集を解いていて軽くつまづいたことがあったので、備忘録的に書いておきます。

どういう問題?

こんな問題でした。

1 行目で整数 N が与えられます。
2 行目で、N 個の整数 a_1, ... , a_N が半角スペース区切りで与えられます。
a_1, ... , a_N を改行区切りで出力してください。1

入力の例は次の通りです、

入力例1
6
6561 3785 6338 9568 4956 557

どこでつまづいた?

自分は下記のような回答を書いたのですが...

num =int(input())

for i in range(num):
    print(input().replace(' ','\n'))

しかしこんなエラーが出ました。

Traceback (most recent call last):
  File "Main.py", line 5, in <module>
    print(input().replace(' ','\n'))
EOFError: EOF when reading a line

調べてみたところ

EOFError: EOF when reading a line

EOFはEnd Of File のことで、エラーをそのまま読むと、行を読んでいるときに最後の行に到達してしまったよと教えてくれているみたいです。

つまり今回の原因は、最初に

1 行目で整数 N が与えられます。
2 行目で、N 個の整数 a_1, ... , a_N が半角スペース区切りで与えられます。

と書かれているように、与えられる入力は2行であるのにも関わらず、私が書いた下記のコードでは、最初の行で与えられた整数N(今回は6)をnumという変数に代入した後に、その回数分input()をループさせてしまったために起きたエラーだったんですね。当然、2行しか入力がないのにそれ以上input()を回してどうするのという話でした。

num =int(input())

for i in range(num):
    print(input().replace(' ','\n'))

解答

標準入力の2行目をリストにしてから、1行目で与えられた整数分を出力してあげることで解決しました。
(模範解答はmap関数をしようしていたのですが、ひとまずここでは触れません)

num = int(input())
a = list(input().split(" "))
for i in range(num):
    print(int(a[i])))
  1. 2 行目で与えられる N 個の整数の入力 (paizaランク D 相当)
    https://paiza.jp/works/mondai/stdin_primer/stdin_primer__integer_number_step2

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?