for i in rest
даст вам актуальный элемент в списке, а не индекс.Из вашего кода кажется, что вы хотите добавить значение.Но на самом деле вы снова воспринимаете значение как индекс и пытаетесь извлечь его из массива.
for i in rest:
dev.append(rest[i])
Исправление:
Просто измените выше значение на:
dev.extend(rest)
Но этот код берет значение из остатка, затем снова использует это значение в качестве индекса, и если это значение i
оказывается float
, оно выдает исключение.
Вы не упомянули, какая строка дает вам эту ошибку.Но я думаю, что это должно быть этим.Это может привести ко многим другим неожиданным ошибкам, таким как array out of bound
и т. Д.
. Это ошибка, которую я получаю, если я запускаю ваш код для valor = 18.5
https://ideone.com/HGagLb
Traceback (последний вызов был последним): Файл "./prog.py", строка 71, в файле "./prog.py", строка 51, в convBin TypeError: индексы списка должны быть целыми числами или слайсами, а не плавающими
Разница между приведенным выше примером и приведенным ниже (из вашего кода, где вы обрабатываете int
):
x = 0
while x <= (len(rest) - 1):
dev.append(rest[x])
x += 1
заключается в том, что в первом случае яна самом деле это элемент (int или float) в остальной части списка, а в последующем это допустимый индекс.