为什么我会得到TypeError:不能通过types为'float'的非整型来乘序列?
我打字得到一个销售额(通过input)乘以定义的销售税(0.08),然后打印总金额(销售税时间销售金额)。
我遇到这个错误。 任何人都知道什么是错的或有什么build议?
salesAmount = raw_input (["Insert sale amount here \n"]) ['Insert sale amount here \n']20.99 >>> salesTax = 0.08 >>> totalAmount = salesAmount * salesTax Traceback (most recent call last): File "<pyshell#57>", line 1, in <module> totalAmount = salesAmount * salesTax TypeError: can't multiply sequence by non-int of type 'float'
raw_input
返回一个string(一个字符序列)。 在Python中,乘以一个string和一个浮点数没有定义的意义(当一个string和一个整数相乘时有一个含义: "AB" * 3
是"ABABAB"
;多less是"L" * 3.14
?请不要回答"LLL|"
)。 您需要将stringparsing为数字值。
你可能想尝试:
salesAmount = float(raw_input("Insert sale amount here\n"))
也许这将在未来帮助其他人 – 我尝试多个浮点数和浮点数列表时遇到同样的错误。 问题是这里的每个人都谈到了用一个string乘以一个float(但是这里我的所有元素都是float),所以问题实际上是在列表上使用*运算符。
例如:
import math import numpy as np alpha = 0.2 beta=1-alpha C = (-math.log(1-beta))/alpha coff = [0.0,0.01,0.0,0.35,0.98,0.001,0.0] coff *= C
错误:
coff *= C TypeError: can't multiply sequence by non-int of type 'float'
解决scheme – 将列表转换为numpy数组:
coff = np.asarray(coff) * C
问题是salesAmount被设置为一个string。 如果你在python解释器中inputvariables,然后回车,你会看到input的值被引号包围。 例如,如果你input56.95,你会看到:
>>> sales_amount = raw_input("[Insert sale amount]: ") [Insert sale amount]: 56.95 >>> sales_amount '56.95'
您需要将该string转换为浮动,然后再乘以销售税。 我会留给你弄清楚。 祝你好运!