我的程序包含这个
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'
前两行编译成功。为什么我的代码块的第三行不是?我该如何解决这个问题?
最佳答案
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'
,但将字符串乘以 float (例如 0.0
)则不然。要转换为数字,您可以使用float
:
a + float(b) * c # -0.25
关于Python 3 : TypeError: can't multiply sequence by non-int of type 'float' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52836476/