【问题标题】:Trouble in multiplying list of numbers converted from string to float in a loop (Python)在循环中将从字符串转换为浮点数的数字列表相乘(Python)时遇到问题
【发布时间】:2020-05-26 11:32:45
【问题描述】:

这里我试图将存储在列表中但为字符串类型的数字相乘,显示此错误

TypeError: 不能将序列乘以“float”类型的非整数

我的列表数据示例

[5, 'BTCUSD', '卖出', '9125.5', 6055, '0.66352527', '限价', '成交']

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

【问题讨论】:

    标签: python list loops tkinter treeview


    【解决方案1】:

    我可能需要更多关于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: 不能将序列乘以“float”类型的非整数

    当你试图将一个序列(列表、字符串等)与一个浮点值相乘时,就会发生这种情况:

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

    允许将序列乘以整数值,它的作用是重复序列n次:

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

    在您的代码中,您没有正确完成第一个 float() 函数。第二个 float() 函数做得很好,所以您只是想将一个字符串(尚未转换)与一个浮点值(转换得很好)相乘。请仔细检查代码中的括号。谢谢。

    【讨论】:

    • 谢谢..正如你所说的大括号有问题,现在它可以工作了
    • @JayantNagle 如果答案有帮助,别忘了勾选答案旁边的标记来接受它。
    猜你喜欢
    • 1970-01-01
    • 2020-06-25
    • 2018-10-13
    • 1970-01-01
    • 2019-07-10
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多