【问题标题】:Math.log TypeError: can't multiply sequence by non-int of type 'float'Math.log TypeError:不能将序列乘以“浮点”类型的非整数
【发布时间】:2019-07-16 15:35:47
【问题描述】:

我无法计算浮点对数

logahr = math.log(float (1.54)*hr, 10)
             logfc = math.log(frek, 10)
             loght = math.log(ht, 10)
            #ahr formula
             ahre = (8.29 * logahr**2)- 1.1
            #pangkat formula
             pangkat = ((69.55+26.16*logfc)-13.83*loght-ahre)/(6.55*loght - 44.9)

             d = pow (10, float(pangkat))

             print(d)

logahr = math.log(float (1.54)*hr, 10) TypeError: can't multiply sequence by non-int of type 'float'

【问题讨论】:

  • 错误一目了然:hr 是一个序列,可能是一个列表,您不能将列表与浮点数相乘,只能与整数相乘,但您会得到一个包含 x 倍的列表list (其中 x 是 int 乘以您的列表,但可能这不是您的目的)。您必须在 hr 的元素上使用 for ,然后在内部执行 math.log(elem*1.54,10)
  • 不一定是序列,也可以是字符串,也可以是非整数或非浮点数@crissal
  • 是的,你是对的,我假设 list 但每个可迭代对象都可以完成这项工作

标签: python


【解决方案1】:

在这一行之前:

logahr = math.log(float (1.54)*hr, 10)

在您的变量 hr 中,您有 stringsequence 或其他不是整数或浮点数的变量

如果你有字符串:

logahr = math.log(float (1.54)*float(hr), 10)

如果它的顺序:

logahr = math.log(float (1.54)*float(hr[0]), 10)

无论如何检查变量hr中的类型

【讨论】:

    猜你喜欢
    • 2018-12-19
    • 2013-09-11
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 2011-04-06
    • 2012-09-17
    相关资源
    最近更新 更多