web-dev-qa-db-ja.com

Pythonの1つの入力から2つの値?

これはやや単純な質問であり、ここで質問するのは嫌ですが、他のどこにも答えが見つからないようです:Pythonの1行でユーザーから複数の値を取得することは可能ですか?

たとえば、Cでは次のようなことができます:scanf("%d %d", &var1, &var2)。しかし、Pythonそれに相当するものが何なのかわかりません。それはvar1, var2 = input("Enter two numbers here: ")のようなものになると考えましたが、それは機能せず、不平を言っていない.

誰もがこれをエレガントかつ簡潔に行う良い方法を知っていますか?

32
Donovan

Pythonマップする方法

_printf("Enter two numbers here: ");
scanf("%d %d", &var1, &var2)
_

だろう

_var1, var2 = raw_input("Enter two numbers here: ").split()
_

split(' ')はデフォルトで区切り文字として空白文字を使用するため、split()を明示的に指定する必要がないことに注意してください。つまり、単にsplit()を呼び出した場合、ユーザーはタブを使用して数字を区切ることができ、本当に必要な場合はスペースも使用できます。

Pythonには動的型付けがあるため、_%d_を指定する必要はありません。ただし、上記を実行した場合、_var1_と_var2_は両方とも文字列になります。別の行を使用してintに変換できます

_var1, var2 = [int(var1), int(var2)]
_

または、list comprehensionを使用できます

_var1, var2 = [int(x) for x in [var1, var2]]
_

まとめると、このワンライナーですべてを実行できたはずです。

_# Python 3
var1, var2 = [int(x) for x in input("Enter two numbers here: ").split()]

# Python 2
var1, var2 = [int(x) for x in raw_input("Enter two numbers here: ").split()]
_
54
kizzx2

あなたは本当にCの方法でそれをすることはできません(私は思う)が、これを行うPythonの方法は(あなたの「入力」の間にスペースがある場合)でしょう:

raw_answer = raw_input()
answers = raw_answer.split(' ') # list of 'answers'

だから、あなたの試みを書き換えることができます:

var1, var2 = raw_input("enter two numbers:").split(' ')

これは、「最初の」ソリューションを使用する場合よりも柔軟性がやや低いことに注意してください(たとえば、最後にスペースを追加すると、これは既に壊れています)。

また、var1とvar2は、intにキャストされない場合でもこのメソッドを使用した文字列であることに注意してください。

10
ChristopheD

Python 2.*inputで、ユーザーは任意の式を入力できます。タプル:

>>> a, b = input('Two numbers please (with a comma in between): ')
Two numbers please (with a comma in between): 23, 45
>>> print a, b
23 45

Python 3.*では、input2.*raw_inputに似ており、ユーザーが入力した文字列を返します(evalとして2.*と入力するのではなく)以前はinput)で行っていたので、.split、および/またはeval、&cを使用する必要がありますが、全体をさらに制御できるようになります。

8
Alex Martelli

pythonのa、bのように2つの整数を取る必要がある場合は、マップ関数を使用できます。
入力が、

 1 
 5 3 
 1 2 3 4 5 

ここで、1はテストケースを表し、5は値の数を表し、3はタスク値を表し、次の行では5つの値が与えられ、PYTH 2.xバージョンでこのメソッドを使用してそのような入力を取得できます。

testCases=int(raw_input())
number, taskValue = map(int, raw_input().split())
array = map(int, raw_input().split())

Map()の 'int'を必要な別のデータ型に置き換えることができます。

6
Rishabh Prasad

入力を2つの異なる入力に分割するsplit()メソッドを使用する必要があります。分割に渡すものはすべて検索され、そこから入力が分割されます。ほとんどの場合、その空白です。

たとえば、入力23 24 25。次のような3つの異なる入力が必要です。

num1 = 23
num2 = 24
num3 = 25

だから、Pythonでは、あなたができる

num1,num2,num3 = input().split(" ")
4
devDeejay

すべての入力は文字列を介して行われます。受け取った文字列を処理するのはあなた次第です。それ以外の場合は、eval(input())メソッドを使用しますが、とにかくほとんどの状況では推奨されません。

input_string = raw_input("Enter 2 numbers here: ")
a, b = split_string_into_numbers(input_string)
do_stuff(a, b)
3
sykora

私が見つけた解決策は次のとおりです:


ユーザーにコンマまたは他の文字で区切られた2つの数字を入力するように依頼します

value = input("Enter 2 numbers (separated by a comma): ")

次に、文字列が分割されます:nは最初の値を取り、mは2番目の値を取ります

n,m = value.split(',')

最後に、それらを整数として使用するには、それらを変換する必要があります

n, m = int(n), int(m)


3
E. Zavala

この便利な機能を確認してください。

def gets(*types):
    return Tuple([types[i](val) for i, val in enumerate(raw_input().split(' '))])

# usage:
a, b, c = gets(int, float, str)

n入力数の場合、変数を空のリストとして宣言し、同じ構文を使用して続行します。

>>> x=input('Enter value of a and b').split(",")
Enter value of a and b
1,2,3,4
>>> x
['1', '2', '3', '4']
2
Premgi kumar

私が自分で見つけた最も簡単な方法は、2つの変数a、bがあるように、入力でスプリット関数を使用することでした

a,b=input("Enter two numbers").split()

それでおしまい。もう1つのメソッド(明示的なメソッド)があります。たとえば、3つの値で入力を取得する場合

value=input("Enter the line")
a,b,c=value.split()

簡単.

1
user8258851

スペースで区切られた2つの入力:

x,y=input().split()
1
Zeinab

これは、分割コマンドと区切り文字で区切られた2つの入力を「、」として取るサンプルコードです。


>>> var1, var2 = input("enter two numbers:").split(',')
_>>>enter two numbers:2,3_
_>>> var1_
_'2'_
_>>> var2_
_'3'_


使用できる区切り文字の他のバリエーションは次のとおりです。
var1, var2 = input("enter two numbers:").split(',')
var1, var2 = input("enter two numbers:").split(';')
var1, var2 = input("enter two numbers:").split('/')
var1, var2 = input("enter two numbers:").split(' ')
var1, var2 = input("enter two numbers:").split('~')

1

1行で2つの入力が必要な場合、コードは次のようになりますenter code here

x,y=input().split(" ")

print(x,y)

入力として値を与えた後、split( "")関数またはメソッドのためにそれらの間にスペースを入れなければなりません。

ただし、x、yの型を次のように変換する必要がある算術演算を実行する場合、これらの値は文字列型です。int(x)、int(y)

python .enter code hereのリストを使用してこれを行うこともできます

list1=list(map(int,input().split()))
print(list1)

このリストは、int型の要素を提供します

0
JATIN BEHUNE

このソリューションは、( "22 44 112 2 34")のような複数の文字列を整数リストに変換するために使用されており、リスト内の値にアクセスできます。

n = input("") # Like : "22 343 455 54445 22332"

if n[:-1] != " ":
n += " "

char = ""
list = []

for i in n :
    if i != " ":
        char += i
    Elif i == " ":
        list.append(int(char))
        char = ""

print(list) # Be happy :))))
0
Ali Montajebi

私はPython 3でこれを試しましたが、うまくいくようです。

a, b = map(int,input().split())

print(a)

print(b)

入力:3 44

出力:

3

44

0
user10564553
a,b=[int(x) for x in input().split()]
print(a,b)

出力

10 8

10 8

0
Siddharth jha

この方法でできます

a, b = map(int, input().split())

OR

a, b = input().split()
print(int(a))

OR

MyList = list(map(int, input().split()))
a = MyList[0]
b = MyList[1]
0
vishwaraj

Python 3)で、raw_input()input()に名前が変更されました。

_input([Prompt])
_

Prompt引数が存在する場合、末尾の改行なしで標準出力に書き込まれます。次に、関数は入力から行を読み取り、文字列に変換して(末尾の改行を削除して)それを返します。 EOFが読み取られると、EOFErrorが発生します。

だからあなたはこのようにすることができます

_x, y = input('Enter two numbers separating by a space: ').split();
print(int(x) + int(y))
_

スペースを使用して2つの数値を入力しないと、ValueError例外が発生します。だからそれは良いことです。

N.B. Ifinput()の古い動作が必要な場合は、eval(input())を使用します

0
unclexo