我试图让用户同时输入矩形的长度和宽度。
length,width = float (raw_input("What is the length and width? ")).split(',')
但是,当我运行程序并输入两个变量(例如 3,5)时,我收到一条错误消息,指出我的 float() 类型的文字无效。
嗯,那是因为您输入了两个用逗号分隔的数字,但将该值拆分为句点。用逗号分割它,它应该工作得更好。
首先,为什么会失败:
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]
,但在这种情况下真的没那么重要;无论哪种方式都足够简单,您应该了解它们的含义。
您可能还想转换为整数:
prompt = "what is the length and width? "
inpt = raw_input(prompt)
length, width = [int(i) for i in inpt.split(',')]