python中一个输入的两个值?

2024-09-21 07:53:00 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个很简单的问题,我不想在这里问这个问题,但我在其他地方似乎找不到答案:是否可以在一行Python中从用户获取多个值?

例如,在C语言中,我可以这样做:scanf("%d %d", &var1, &var2)。但是,我不知道Python的等价物是什么。我想应该是像var1, var2 = input("Enter two numbers here: ")这样的东西,但那不起作用,我没有抱怨,因为如果是这样的话就没有什么意义了。

有没有人知道如何优雅而简洁地完成这件事?


Tags: 答案用户inputhere地方意义entertwo
3条回答

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。但是,如果运行上面的命令,那么var1var2将同时是两个字符串。您可以使用另一行将它们转换为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允许用户输入任何表达式,例如元组:

>>> 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,但您也将更能控制整个事情。

相关问题 更多 >

    热门问题