【问题标题】:Why do I get TypeError: can't multiply sequence by non-int of type 'float'?为什么我会得到 TypeError:不能将序列乘以“浮点”类型的非整数?
【发布时间】:2010-10-03 21:38:52
【问题描述】:

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

【问题讨论】:

    标签: python


    【解决方案1】:

    你不能将字符串和浮点数相乘。你可以尝试如下。它工作正常

    totalAmount = salesAmount * float(salesTax)
    

    【讨论】:

      【解决方案2】:

      也许这会在未来对其他人有所帮助 - 我在尝试多个浮点数和浮点数列表时遇到了同样的错误。问题是这里的每个人都在谈论将浮点数与字符串相乘(但这里我所有的元素一直都是浮点数)所以问题实际上是在列表上使用 * 运算符。

      例如:

      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
      

      【讨论】:

      • 我喜欢这种方法!
      • 如果不想导入numpy,可以这样做:coff = [i * c for i in coff]
      【解决方案3】:

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

      你可能想试试:

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

      【讨论】:

      • 在发帖和使用 Google 之前,我学会了阅读语法错误。我试图将 salesAmount 的 raw_input 转换为 int 而不是 float。你知道为什么 int 不起作用,而是 float 会吗?和我一起裸露吧,哈哈。
      • 将字符串乘以一个整数(使用 * 运算符)在 Python 中是明确定义的。没有定义将字符串乘以浮点数,这就是 Python 所抱怨的。
      • 谢谢格雷格!我想我需要了解一些更基本的规则。
      • @Raj:我说它定义明确,但不一定是你所期望的。 "abc" * 3 是 "abcabcabc",因此 "5" * 3 是 "555"。
      【解决方案4】:

      问题是salesAmount 被设置为一个字符串。如果您在 python 解释器中输入变量并按回车键,您将看到输入的值被引号括起来。例如,如果您输入 56.95,您会看到:

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

      您需要先将字符串转换为浮点数,然后再乘以销售税。我会把它留给你弄清楚。祝你好运!

      【讨论】:

      • 非常感谢兄弟。感谢您的帮助!我不知道在定义时能够存储浮点值。我试图即时执行此操作(但我试图将值从字符串更改为 int - 所以我错了,因为我需要一个浮点值)。
      猜你喜欢
      • 2018-12-19
      • 2013-09-11
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 2011-04-06
      相关资源
      最近更新 更多