2024-09-21 07:53:00 发布
网友
这是一个很简单的问题,我不想在这里问这个问题,但我在其他地方似乎找不到答案:是否可以在一行Python中从用户获取多个值?
例如,在C语言中,我可以这样做:scanf("%d %d", &var1, &var2)。但是,我不知道Python的等价物是什么。我想应该是像var1, var2 = input("Enter two numbers here: ")这样的东西,但那不起作用,我没有抱怨,因为如果是这样的话就没有什么意义了。
scanf("%d %d", &var1, &var2)
var1, var2 = input("Enter two numbers here: ")
有没有人知道如何优雅而简洁地完成这件事?
Python映射方式
printf("Enter two numbers here: "); scanf("%d %d", &var1, &var2)
会是
var1, var2 = raw_input("Enter two numbers here: ").split()
注意,我们不必显式指定split(' '),因为split()使用任何空格字符作为默认分隔符。这意味着如果我们简单地调用split(),那么用户可以使用制表符来分隔数字(如果他真的需要的话)和空格
split(' ')
split()
Python具有动态类型,因此不需要指定%d。但是,如果运行上面的命令,那么var1和var2将同时是两个字符串。您可以使用另一行将它们转换为int
%d
var1
var2
int
var1, var2 = [int(var1), int(var2)]
或者你可以使用列表理解
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()]
你不能用C的方式来做(我认为),但一种Python式的方法是(如果你的“输入”之间有空格的话):
raw_answer = raw_input() answers = raw_answer.split(' ') # list of 'answers'
所以你可以重新尝试:
var1, var2 = raw_input("enter two numbers:").split(' ')
请注意,这比使用“第一个”解决方案要灵活一些(例如,如果在末尾添加一个空格,这将已经中断)。
还要注意,在不强制转换为int时,var1和var2仍然是该方法的字符串
在Python 2.*中,input允许用户输入任何表达式,例如元组:
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.*的raw_input,返回一个用户键入的字符串(而不是eval将其作为2.*用于input),因此您必须.split,和/或eval,但您也将更能控制整个事情。
Python 3.*
2.*
raw_input
eval
.split
Python映射方式
会是
注意,我们不必显式指定
split(' ')
,因为split()
使用任何空格字符作为默认分隔符。这意味着如果我们简单地调用split()
,那么用户可以使用制表符来分隔数字(如果他真的需要的话)和空格Python具有动态类型,因此不需要指定
%d
。但是,如果运行上面的命令,那么var1
和var2
将同时是两个字符串。您可以使用另一行将它们转换为int
或者你可以使用列表理解
总而言之,你可以用这句话来完成整个事情:
你不能用C的方式来做(我认为),但一种Python式的方法是(如果你的“输入”之间有空格的话):
所以你可以重新尝试:
请注意,这比使用“第一个”解决方案要灵活一些(例如,如果在末尾添加一个空格,这将已经中断)。
还要注意,在不强制转换为int时,var1和var2仍然是该方法的字符串
在
Python 2.*
中,input
允许用户输入任何表达式,例如元组:在
Python 3.*
中,input
类似于2.*
的raw_input
,返回一个用户键入的字符串(而不是eval
将其作为2.*
用于input
),因此您必须.split
,和/或eval
,但您也将更能控制整个事情。相关问题 更多 >
编程相关推荐