質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

3906閲覧

2 行目で与えられる N 個の整数の入力

d.masaoka

総合スコア1

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/12/18 05:43

やりたいこと

標準入力から 2つ目以降の整数を半角スペース区切りで出力したいです。
うまくできず、進まない状態なので表示方法を教えていただけないでしょうか?

入力
6
6561 3785 6338 9568 4956 557

期待する出力
6561
3785
6338
9568
4956
557

#記述したコード

s = int(input()) for i in range(s): n = input().split() print(n)

#エラー内容

Traceback (most recent call last): File "Main.py", line 8, in <module> n = input().split() EOFError: EOF when reading a line

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

竸プロの定型文らしいので、竸プロの「list(map(int, input().split()))」って何?を読んでください。

投稿2021/12/18 06:10

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

d.masaoka

2021/12/19 09:23

ありがとうございます。 参考にさせていただきます。
guest

0

当たり前じゃない?

まず、プログラミングってのは「こう書けばいい」ってものではありません。
ロジックを書くのです。

最初にエラーメッセージぐらい読みましょう。エラ―メッセージにはヒントが隠されています。

Traceback (most recent call last): File "Main.py", line 8, in <module> n = input().split() EOFError: EOF when reading a line [訳] トレースバック(最近呼ばれたもの): "Main.py"ファイルの 8行目。 n = input().split() のところ EOFError: 行を読んだらEOFだったぞ?

つまり、「これ以上読めないのに、読めという命令。いや、読めないから…」っていうツッコミみたいなものです。

とりあえず、コードを読みましょう。コードを読むコツは「一行レベルで、その行が何をしているかを考えながら読む」です。

Python

1# 標準入力から受け取り、整数としてsにセット 2s = int(input()) 3 4# s回、以下を繰り返す 5for i in range(s): 6 # 標準入力から受け取り、半角スペースでsplit、結果をnにセット 7 n = input().split() 8 # nの値を表示 9 print(n)

これを疑似コードとして抜き出します。

1. 標準入力から受け取り、整数としてsにセット 2. s回、以下を繰り返す 2.1. 標準入力から受け取り、半角スペースでsplit、結果をnにセット 2.2. nの値を表示

この疑似コードを実際にシミュレーションしてみる。つまり数学の手順とかみたいに手作業で計算してみる。

ユーザが

6 6561 3785 6338 9568 4956 557

と入力したと仮定したら、

まず(1)で 一行目の"6" が取得される。それを整数に変換して s = 6 となる。
(2)で「s回繰り返す」ですが、s = 6 なので、「6回繰り返す」となる。
そして (2.1)に行き、一行レベルで取得した "6561 3785 6338 9568 4956 557" を splitする。

s = 6 n = { 6561, 3785, 6338, 9568, 4956, 557 }

(2.2)で表示して (2)に戻る。(ループなので)
(2.1)に行き、取得しようとするけど、三行目は無いので EOFに。そして今回の例外 ( EOFError: EOF when reading a line ) となる。

つまり、読み込もうとしたけど対象データが無いから読み込めない。でも命令的には「読み込め」なので無理。ない袖は振れない。よって例外が投げられている。

エラーになっている理由は上記で。

投稿2021/12/18 06:04

BeatStar

総合スコア4962

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

d.masaoka

2021/12/19 09:23

色々と教えていただきありがとうございます。 私の認識不足でした。今回の事を参考に再度挑戦して行きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問