Python 3: TypeError: не может умножить последовательность на не-int типа 'float'

1

Моя программа содержит это

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'

Первые две строки успешно компилируются. Почему не третья строка моего кода? Как это исправить?

Теги:
typeerror

2 ответа

2
Лучший ответ

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
0

Вы уверены, что все переменные являются правильными? Попробуйте использовать print(type(value))

для определения этого факта. Вы всегда можете использовать float float (variable)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню