-2

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

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

但是,当我运行程序并输入两个变量(例如 3,5)时,我收到一条错误消息,指出我的 float() 类型的文字无效。

4

3 回答 3

2

嗯,那是因为您输入了两个用逗号分隔的数字,但将该值拆分为句点。用逗号分割它,它应该工作得更好。

于 2012-12-05T23:57:54.720 回答
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(',')]

map功能:

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

我会使用列表推导,因为这是 BDFL 更喜欢的,并且因为它对于您可能想要做的其他事情更简单 like x[2],但在这种情况下真的没那么重要;无论哪种方式都足够简单,您应该了解它们的含义。

于 2012-12-06T00:46:37.440 回答
1

您可能还想转换为整数:

prompt = "what is the length and width? "
inpt = raw_input(prompt)
length, width = [int(i) for i in inpt.split(',')]
于 2012-12-06T00:03:03.423 回答