質問するログイン新規登録
Python 3.x

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

Q&A

解決済

2回答

5911閲覧

PythonでCtrl + Dが入力されるまで標準入力のループを続けるには?

faker

総合スコア51

Python 3.x

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

0グッド

0クリップ

投稿2020/01/11 05:44

0

0

タイトルの通りです。PythonでCtrl + CやCtrl + Dが入力されるまで入力を受け付け続けるにはどうすればよいですか?Pythonのバージョンは3.6.9です。
分かりづらいかもしれないのでCで記述した場合のものを以下に乗せます。回答よろしくお願いいたします。

C

1while (scanf("%d", &n) != EOF){ 2 sum = sum + n; 3}

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

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

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

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

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

guest

回答2

0

ベストアンサー

提示のCのプログラムは、文字列の数値変換などを含んでいるので、純粋に入力だけを行う

C

1while( fgets(line,sizeof line,stdin) ){ 2 ~~~ 3}

の場合だと、これをそのまま置き換えると、

Python

1while (line:=sys.stdin.readline()) != "": 2 ~~~

が該当します。
input()で標準入力から読む方法もありますが、EOFで例外になるので、Cのようにシンプルになりません。
sys.stdin.readline()だとEOFで空文字列が返ります。(空行入力だと改行だけの文字列が返る)
input()sys.stdin.readline()では、入力値に改行文字が含まれるかどうかも違います)

Python3.8以降でなければ、代入が値を持てないので上記ではだめで、

Python

1while True: 2 line = sys.stdin.readline() 3 if line == "": 4 break 5 ~~~

と、ちょっと長くなるので、forを使うとどちらのバージョンでも同じにできます。

Python

1for line in sys.stdin: 2 ~~~

投稿2020/01/11 07:17

otn

総合スコア86385

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

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

0

Python

1import sys 2 3for line in map(str.rstrip, sys.stdin): 4 print(line)

投稿2020/01/11 05:58

編集2020/01/11 05:58
LouiS0616

総合スコア35678

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問