Проблема с умножением списка чисел, преобразованных из строки в число с плавающей запятой в al oop (Python) - PullRequest
0 голосов
/ 26 мая 2020

Здесь я пытаюсь умножить числа, хранящиеся в списке, но в строковом типе, показывая эту ошибку

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

Пример данных моего списка

[5, 'BTCUSD', 'Sell', '9125.5', 6055, '0.66352527', 'Limit', 'Filled']

def calc():
num=0.0
den=0.0
for ids in listBox.selection():
    num=num+(float(listBox.item(ids)['values'][3]*float(listBox.item(ids)['values'][4]))) #Problem occurng here
    den=den+float((listBox.item(ids)['values'][4]))
    print(listBox.item(ids)['values'])
    print(num/den)
return 0

1 Ответ

2 голосов
/ 26 мая 2020

Мне может потребоваться дополнительная информация о listBox,
, но, поскольку я примерно вижу данный код, я думаю, что строку, вызвавшую ошибку, следует отредактировать, как показано ниже:

# Original Code:
#   num=num+(float(listBox.item(ids)['values'][3]*float(listBox.item(ids)['values'][4])))
    num=num+(float(listBox.item(ids)['values'][3])*float(listBox.item(ids)['values'][4]))


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

Это происходит буквально, когда вы пытаетесь умножить последовательность (список, строка, и т. д. c) со значением с плавающей запятой, например:

a = 'hello'
print(a * 3.0)  # error

Разрешено умножение последовательности на целочисленное значение, и это функционирует как повторение последовательности n раз:

a = 'hello'
print(a * 3)   # 'hellohellohello'

В вашем коде вы неправильно завершили первую функцию float (). Вторая функция float () выполнена хорошо, поэтому вы просто пытались умножить строку (которая еще не преобразована) на значение с плавающей запятой (которое хорошо преобразовано). Пожалуйста, внимательно проверьте скобки в вашем коде. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...