ユーザー入力から単一の変数を読み取るためのinput()関数に精通しています。 2つの変数を読み取る同様の簡単な方法はありますか?
私は同等のものを探しています:
_scanf("%d%d", &i, &j); // accepts "10 20\n"
_
これを実現する1つの方法は、raw_input()
を使用してから、入力した内容をsplit
することです。もっとエレガントな方法はありますか?
これはライブで使用するためのものではありません。学ぶためだけに..
いいえ、通常の方法はraw_input().split()
です。
あなたの場合、文字列ではなく整数にしたい場合は、map(int, raw_input().split())
を使用できます。
そのためにinput()
を使用しないでください。ユーザーが入力した場合に何が起こるかを検討してください
import os;os.system('do something bad')
Sys.stdinから読み取ることもできます
import sys
a,b = map(int,sys.stdin.readline().split())
私もこのようなものに慣れていません。 python.org Webサイトから少し調査し、これを機能させるために少しハッキングしました。 raw_input関数が再び戻ってきて、inputから変更されました。これは私が思いついたものです:
i,j = raw_input("Enter two values: ").split
i = int(i)
j = int(j)
確かに、コードはCscanfまたはC++cinを使用するワンライナーほどエレガントではありません。 PythonコードはJava(C、C++、またはPythonとはまったく異なるメカニズムを採用)に近いため、各変数を個別に処理する必要があります。
Pythonでは、raw_input関数はコンソールから文字を取得し、それらを出力として単一のStringに連結します。代入演算子の左側に変数が1つだけ見つかった場合、split関数はこのStringをに分割しますlistofStringvalues。
私たちの場合、2つの変数が必要な場合は、識別子にコンマ区切りのリストを使用して値を取得できます。 String値は、リストされた変数に割り当てられます。これらの値を使用して算術演算を実行する場合は、を使用して値を数値int(またはfloat)データ型に変換する必要があります。 Pythonの組み込みintまたはfloat関数。
私はこの投稿が非常に古い投稿への返信であることを知っています、そしておそらく知識はしばらくの間「常識」としてそこにありました。ただし、CS1教室で提示できる最もエレガントなソリューションであると感じるまで、検索とハッキングに数時間を費やす必要はなく、このような投稿をいただければ幸いです。
この方法は、任意の数の入力に使用することもできます。空白で区切られた3つの入力について、次のことを考慮してください。
import sys
S = sys.stdin.read()
S = S.split()
S = [int(i) for i in S]
l = S[0]
r = S[1]
k = S[2]
まず、行全体を次のような文字列に読み込みます
string = raw_input()
次に、このようなforループを使用します
prev = 0
lst = []
index = 0
for letter in string :
if item == ' ' or item == '\n' :
lst.append(int(string[prev:index])
prev = index + 1
このループは、文字列への入力として1行を受け取り、その中の部分を個別に処理してから、整数に変換した後、リストに数値を追加します。
python 3.6.1でこれを使用すると、2つのint値を読み取ることができます
n,m = map(int,input().strip().split(" "))
またはあなたはこれを行うことができます
input_user=map(int,raw_input().strip().split(" "))