首页 > 解决方案 > Python 3:TypeError:不能将序列乘以“float”类型的非整数

问题描述

我的程序包含这个

print("hyy")
print(self.reward, self.gamma, max_val)
print(self.reward + (self.gamma * max_val))

这里self.reward是 -0.25,self.gamma是 1 和max_val是0。

当我运行代码时,我的输出是:

hyy
-0.25 1 0.0
    ans = goal.value_iteration()
  File "/Users/mac/Desktop/MDP-master/value.py", line 237, in value_iteration
    print(self.reward + (self.gamma * max_val))
TypeError: can't multiply sequence by non-int of type 'float'

前两行编译成功。为什么不是我的代码块的第三行?我该如何解决?

标签: pythontypeerror

解决方案


self.gamma不是数字。最可能的是,它是一个字符串。这是一个重现您的错误的最小示例:

a, b, c = -0.25, '1', 0.0

a + b * c  # TypeError: can't multiply sequence by non-int of type 'float'

定义了将字符串乘以整数,例如'a' * 2 == 'aa',但将字符串乘以浮点数,例如0.0不是。要转换为数字,您可以使用float

a + float(b) * c  # -0.25

推荐阅读