我试图让用户同时输入矩形的长度和宽度。
length,width = float (raw_input("What is the length and width? ")).split(',')
然而,当我运行程序并输入两个变量(如3,5)时,我得到一个错误,说我的类型为float()的文字无效。
答案 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}}更简单,但在这种情况下它真的无关紧要;这两种方式都很简单,你应该了解它们的含义。