简体   繁体   中英

Trouble in multiplying list of numbers converted from string to float in a loop (Python)

Here I am trying to multiply numbers stored in a list but in string type, showing this error

TypeError: can't multiply sequence by non-int of type 'float'

My list data sample

[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

I might need more information about listBox ,
but as I roughly see the given code, I think the line which caused error should be edited like below:

# 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: can't multiply sequence by non-int of type 'float'

This occurs literally when you're trying to multiply a sequence(list, string, etc) with a float value like:

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

Multiplying a sequence by integer value is allowed, and it functions as repeating the sequence n times:

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

In your code, you didn't finished first float() function correctly. The second float() function is well done, so you were just trying to multiply a string (which is not converted yet) with a float value (which is converted well). Please inspect the parenthesis in your code carefully. Thanks.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM