这是一个简单的问题,我不想在这里问它,但我似乎无法在其他任何地方找到答案:是否有可能在一行Python中从用户那里获得多个值?
例如,在C中,我可以这样做:scanf("%d %d", &var1, &var2)
。但是,我无法弄清楚Python的等价物是什么。我认为它只是var1, var2 = input("Enter two numbers here: ")
之类的东西,但是这不起作用而且我没有抱怨,因为如果它做的话就不会有很多意义。
有没有人知道一个优雅而简洁的方法吗?
答案 0 :(得分:54)
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()]
答案 1 :(得分:10)
你不能真的以C方式(我认为)这样做,但是这样做的pythonic方法是(如果你的'输入'在它们之间有空格):
raw_answer = raw_input()
answers = raw_answer.split(' ') # list of 'answers'
所以你可以改写你的尝试:
var1, var2 = raw_input("enter two numbers:").split(' ')
请注意,这比使用“第一个”解决方案稍微灵活一些(例如,如果你在最后添加一个空格,这将会破坏)。
还要注意,当不转换为int时,var1和var2仍然是使用此方法的字符串。
答案 2 :(得分:8)
在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.*
中,input
就像2.*
的{{1}}一样,为您返回一个字符串,该字符串就是用户输入的内容(而不是raw_input
正如eval
上2.*
所做的那样,所以你必须input
,和/或.split
,& c但你也会更多控制整件事。
答案 3 :(得分:6)
如果你需要取两个整数说a,b在python中你可以使用map函数 假设输入是,
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'替换为所需的其他数据类型。
答案 4 :(得分:3)
所有输入都将通过字符串。收到后,您可以自行处理该字符串。除非是这样,否则您使用eval(input())方法,但不建议在大多数情况下使用该方法。
input_string = raw_input("Enter 2 numbers here: ")
a, b = split_string_into_numbers(input_string)
do_stuff(a, b)
答案 5 :(得分:3)
您必须使用split()
方法将输入分成两个不同的输入。无论你进入分割中的是什么,都要查找并从那里分割输入。在大多数情况下,它是白色空间。
例如,您输入23 24 25
。您期望有3种不同的输入,例如
num1 = 23
num2 = 24
num3 = 25
所以在Python中,你可以做到
num1,num2,num3 = input().split(" ")
答案 6 :(得分:2)
我找到的解决方案如下:
要求用户输入两个以逗号或其他字符分隔的数字
value = input("Enter 2 numbers (separated by a comma): ")
然后,字符串被拆分:n
取第一个值m
取第二个值
n,m = value.split(',')
最后,要将它们用作整数,必须将它们转换为
n, m = int(n), int(m)
答案 7 :(得分:2)
检查这个方便的功能:
def gets(*types):
return tuple([types[i](val) for i, val in enumerate(raw_input().split(' '))])
# usage:
a, b, c = gets(int, float, str)
答案 8 :(得分:1)
我找到的最简单的方法是使用带输入的分割功能 就像你有两个变量a,b
a,b=input("Enter two numbers").split()
就是这样。 还有一种方法(显式方法) 例如 - 你想要输入三个值
value=input("Enter the line")
a,b,c=value.split()
很容易..
答案 9 :(得分:1)
这是一个示例代码,用于将由split命令和分隔符分隔的两个输入作为“,”
>>> 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('~')
答案 10 :(得分:1)
对于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']
答案 11 :(得分:0)
a,b=[int(x) for x in input().split()]
print(a,b)
输出
10 8
10 8
答案 12 :(得分:0)
在Python 3中,raw_input()
重命名为input()
。
input([prompt])
如果存在提示参数,则将其写入标准输出 没有尾随换行符。然后该函数从输入中读取一行, 将其转换为字符串(带尾随换行符),然后返回 那。读取EOF时,会引发EOFError。
所以您可以这样做
x, y = input('Enter two numbers separating by a space: ').split();
print(int(x) + int(y))
如果不使用空格放置两个数字,则会出现ValueError
异常。所以这很好。
如果您需要使用input()
的旧行为,请使用eval(input())
答案 13 :(得分:0)
我在Python 3中尝试过,似乎可以正常工作。
<input class="dynamicurl" />
$.validator.addMethod("dynamicurl", function(value, element) {
return $.validator.methods.remote.call(this, value, element, "http://yoururl/validationService/"+value);
}, $.validator.messages.remote);
输入:3 44
输出:
3
44
答案 14 :(得分:0)
两个输入之间用空格隔开:
x,y=input().split()
答案 15 :(得分:0)
此解决方案用于将多个字符串(例如“ 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 :))))
答案 16 :(得分:0)
您可以这样做
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]
答案 17 :(得分:0)
如果我们要在一行中输入两个输入,则代码如下enter code here
x,y=input().split(" ")
print(x,y)
在将值作为输入后,由于split(“”))函数或方法,我们必须在它们之间留出空格。
但是这些值是字符串类型,如果要执行一些算术运算,我们必须转换x,y的类型如下 int(x),int(y)
我们也可以借助python中的list来做到这一点。enter code here
list1=list(map(int,input().split()))
print(list1)
此列表给出了int类型的元素