Моя программа содержит это
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
не является числовым. Большинство likley, это строка. Вот минимальный пример, который воспроизводит вашу ошибку:
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
Вы уверены, что все переменные являются правильными? Попробуйте использовать print(type(value))
для определения этого факта. Вы всегда можете использовать float float (variable)