如何让Python 2.7在一行上接受多个变量输入

时间:2012-12-05 23:56:27

标签: python variables input

我试图让用户同时输入矩形的长度和宽度。

length,width = float (raw_input("What is the length and width? ")).split(',')

然而,当我运行程序并输入两个变量(如3,5)时,我得到一个错误,说我的类型为float()的文字无效。

3 个答案:

答案 0 :(得分:2)

嗯,那是因为你输入的两个数字用逗号分隔,但是在一个句点上分割该值。将它拆分为逗号,它应该可以更好地工作。

答案 1 :(得分:1)

您也可能想要转换为整数:

prompt = "what is the length and width? "
inpt = raw_input(prompt)
length, width = [int(i) for i in inpt.split(',')]

答案 2 :(得分:1)

首先,为什么会失败:

float (raw_input("What is the length and width? ")).split(',')

split(',')将字符串拆分为一系列字符串。您不能在一系列字符串上调用float,只能在一个字符串上调用[float(x) for x in raw_input("What is the length and width? ")).split(',')] 。这就是错误说它是“float类型的无效文字”的原因。

如果要对序列中的每个值调用相同的函数,有两种方法可以执行此操作:

使用列表推导(或生成器表达式):

map

map(float, raw_input("What is the length and width? ")).split(',')) 功能:

x[2]

我会使用列表理解,因为这是BDFL更喜欢的,并且因为它对于你可能想要做的其他事情比{{1}}更简单,但在这种情况下它真的无关紧要;这两种方式都很简单,你应该了解它们的含义。