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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

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

Q&A

解決済

3回答

1054閲覧

【python】一回で全ての標準入力を与える方法を教えてください。

tamakoma

総合スコア1

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

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

0グッド

0クリップ

投稿2022/12/12 07:39

前提

現在pythonを学び始めて1ヵ月程度です。
GoogleColabを使っています。

atcoder等の問題を解いている際に、標準入力される数値や文字が多くてプログラムのテストをしたくても手作業では時間が掛かってしまうことがあります。

現在の私ではプログラムが動くか試したいとき、input()の数だけenterを押す必要があるので、一回で全ての標準入力を与える方法があれば知りたいです。

実現したいこと

【a,b,c,の自然数が一行ずつ与えられるので全てを足した数を出力しなさい。】という問題で作ったプログラムが動くかテストしたいとき

python

1==== 21 32 43 5==== 6a=int(input()) 7b=int(input()) 8c=int(input()) 9print(a+b+c) #出力>6

のように====に挟まれた文字が標準入力として与えられる。のようなライブラリや方法があれば教えていただきたいです。

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

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

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

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

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

guest

回答3

0

==== ではなく、''' ですが、以下の様にしてもよいかと思います。

python

1import sys 2import io 3 4input_string =''' 51 62 73 8'''.lstrip() 9org_stdin = sys.stdin 10sys.stdin = io.StringIO(input_string) 11 12# 13a=int(input()) 14b=int(input()) 15c=int(input()) 16sys.stdin = org_stdin 17 18print(a+b+c) #出力>6

投稿2022/12/12 08:02

melian

総合スコア19771

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

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

tamakoma

2022/12/12 09:06

回答ありがとうございます! GoogleColab上では作動しなかったので、これを機にVSCodeに乗り換えました。 VSCode上では正常に動きました。助かりました。
guest

0

ベストアンサー

colabのセル上で実行したい場合は、少し面倒くさいですが以下のようなコードでできなくもないです。

Python

1LINES = """ 21 32 43 5"""

このセルも毎回実行する必要あり

Python

1def inp(): 2 for line in LINES.split('\n'): 3 yield line 4g = inp() 5next(g) # 先頭の改行をスキップ 6def input(): 7 return next(g)

Python

1a=int(input()) 2b=int(input()) 3c=int(input()) 4print(a+b+c) #出力>6

イメージ説明

投稿2022/12/12 08:35

can110

総合スコア38266

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

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

tamakoma

2022/12/12 09:10

質問の内容的に、Colab上でも作動したこちらの回答をベストアンサーにさせていただきました。 ありがとうございます。
guest

0

コマンドのパイプで渡しみてはいかがでしょうか

$ echo "1\n2\n3" | python example.py 6

投稿2022/12/12 07:59

yuma.inaura

総合スコア1453

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問