python中一个输入的两个值?

32 python variables input

这是一个简单的问题,我不想在这里问它,但我似乎无法在其他任何地方找到答案:是否有可能在一行Python中从用户那里获得多个值?

例如,在CI中可以做这样的事情:scanf("%d %d", &var1, &var2).但是,我无法弄清楚Python的等价物是什么.我认为它只是类似的东西var1, var2 = input("Enter two numbers here: "),但这不起作用,我不抱怨,因为如果它确实没有多大意义.

有没有人知道一个优雅和简洁的好方法?

kiz*_*zx2 54

Python的映射方式

printf("Enter two numbers here: ");
scanf("%d %d", &var1, &var2)
Run Code Online (Sandbox Code Playgroud)

将会

var1, var2 = raw_input("Enter two numbers here: ").split()
Run Code Online (Sandbox Code Playgroud)

请注意,我们不必显式指定,split(' ')因为split()默认情况下使用任何空格字符作为分隔符.这意味着如果我们只是简单地调用split()那么用户可以使用制表符分隔数字,如果他真的想要,还有空格.

Python具有动态类型,因此无需指定%d.但是,如果你运行上面那个var1,那var2将是两个字符串.您可以将它们转换为int使用其他行

var1, var2 = [int(var1), int(var2)]
Run Code Online (Sandbox Code Playgroud)

或者你可以使用列表理解

var1, var2 = [int(x) for x in [var1, var2]]
Run Code Online (Sandbox Code Playgroud)

总结一下,你可以用这个单行完成整个过程:

# 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()]
Run Code Online (Sandbox Code Playgroud)


Chr*_*heD 10

你不能真的以C方式(我认为)这样做,但这样做的pythonic方法是(如果你的'输入'在它们之间有空格):

raw_answer = raw_input()
answers = raw_answer.split(' ') # list of 'answers'
Run Code Online (Sandbox Code Playgroud)

所以你可以重写你的尝试:

var1, var2 = raw_input("enter two numbers:").split(' ')
Run Code Online (Sandbox Code Playgroud)

请注意,这比使用"第一个"解决方案稍微灵活一些(例如,如果在末尾添加一个空格,这将会破坏).

还要注意,当不转换为int时,var1和var2仍然是使用此方法的字符串.


Ale*_*lli 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
Run Code Online (Sandbox Code Playgroud)

Python 3.*,input就像是2.*raw_input,回来你这仅仅是用户输入内容的字符串(而不是eval荷兰国际集团作为2.*用来在做的input),所以你必须.split,和/或eval,&C,但你也更加的控制整件事.


Ris*_*sad 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())
Run Code Online (Sandbox Code Playgroud)

您可以将map()中的'int'替换为所需的另一种数据类型.