为什么我会得到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转换为浮动,然后再乘以销售税。 我会留给你弄清楚。 祝你好运!