为什么我得到TypeError:不能用'float'类型的非int乘序列?

2024-04-20 12:54:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在键入一个销售金额(按输入)乘以定义的销售税(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'

Tags: raw键入here定义错误sale金额amount
3条回答

也许这会帮助其他人在未来-我有同样的错误,而试图多重一个浮点数和一个浮点数列表。问题是这里的每个人都在讨论如何将一个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'

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

coff = np.asarray(coff) * C

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

您可能想尝试:

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

问题是salesAmount被设置为字符串。如果在python解释器中输入变量并按enter键,将看到输入的值被引号包围。例如,如果输入56.95,您将看到:

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

在乘以销售税之前,您需要将字符串转换为浮点数。我把这个留给你去弄清楚。祝你好运!

相关问题 更多 >