为什么我得到 TypeError: 不能用‘ float’类型的非整数乘以序列?

我输入得到一个销售额(通过输入)乘以一个确定的销售税(0.08) ,然后让它打印总额(销售税乘以销售额)。

我遇到了这个错误。有人知道哪里出错了吗? 或者有什么建议吗?

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'
503878 次浏览

问题是销售额被设置为一个字符串。如果您在 python 解释器中输入变量并单击 enter,您将看到输入的值被引号包围。例如,如果你输入56.95,你会看到:

>>> sales_amount = raw_input("[Insert sale amount]: ")
[Insert sale amount]: 56.95
>>> sales_amount
'56.95'

在将字符串乘以销售税之前,您需要将其转换为浮点数。我会让你自己想清楚的。祝你好运!

raw_input返回一个字符串(字符序列)。在 Python 中,字符串和浮点数的乘法没有确定的意义(而字符串和整数的乘法有一个意义: "AB" * 3"ABABAB"; "L" * 3.14是多少?请不要回复 "LLL|")。您需要将字符串解析为一个数值。

你可以试试:

salesAmount = float(raw_input("Insert sale amount here\n"))

也许这将在未来对其他人有所帮助——我在尝试将浮点数和浮点数列表相乘时出现了同样的错误。问题是,这里的每个人都讨论过用一个字符串乘以一个浮点数(但是这里所有的元素都是浮点数) ,所以问题实际上是在一个列表中使用 * 操作符。

例如:

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'

解决方案——将列表转换为 numpy 数组:

coff = np.asarray(coff) * C

你不能用 string 和 float 相乘,你可以试试下面的方法,它工作得很好

totalAmount = salesAmount * float(salesTax)