python - 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'
前两行编译成功。为什么不是我的代码块的第三行?我该如何解决?
解决方案
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
推荐阅读
- java - Java Apache POI - Word 文档在创建后自行打开
- r - 编辑后的数据表行焦点
- powerbi - DAX 使用 IF 和 AND 函数
- javascript - ModelState 对小数无效 (2000.00)
- java - 如何导入 com.android.support.test.espresso.contrib ?我已经添加了所需的依赖项,但它显示无法解析符号贡献?
- python-3.x - 由于 astroid 版本冲突,使用 pipenv 安装探矿者失败
- javascript - 如何在屏幕上获取画布可见部分的边界
- reactjs - 在路径中输入数据的图像处理
- firebase - Xamarin.Forms 对消息中心的呼叫每次都会增加
- django - 如何在 Django admin 中模仿新应用程序