【问题标题】:TypeError: can't multiply sequence by non-int of type 'float' with multiplyingTypeError:不能通过乘法将序列乘以“浮点”类型的非整数
【发布时间】:2020-08-21 10:01:07
【问题描述】:

我使用屏幕抓取工具获取帐户余额的值,我想获取该值的 10%,但它给出了以下错误:TypeError: can't multiply sequence by non-int of 'float' 类型。代码如下所示:

account_balance = driver.find_element_by_xpath("/html/body/div[1]/div/div[1]/div[2]/main/section/div/div[1]/section[2]/button[1]/span[1]") 
account_balance_value = account_balance.get_attribute("title")  

它现在给出的值是

print(account_balance_value) 
0,10

所以我改成这个

account_balance_value = account_balance_value.replace(',', '.') 
print(account_balance_value)  
0.10

当我打印它时,它给出了错误:

print(account_balance_value * 0.1)   
TypeError                                 Traceback (most recent call last)
<ipython-input-102-536a3835612f> in <module>
----> 1 print(account_balance_value * 0.1)

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

如果我只是运行它就可以了

print(0.10 * 0.1) 
0.010000000000000002

我在这里做错了什么?

【问题讨论】:

  • 变量 account_balance_value 似乎是一个字符串。尝试使用 float(account_balance_value) 将其转换为浮动。
  • type(account_balance_value) 的输出是什么?

标签: python python-3.x selenium


【解决方案1】:

get_attribute(attribute_name) 将返回一个字符串。所以account_balance_valuestring 类型,因此您可以进一步使用replace() 来操作字符串:

account_balance_value = account_balance_value.replace(',', '.')

所以通过所有可能的方式,通过代码行:

print(account_balance_value)  

您正在打印 string 并且不能将 string account_balance_valuefloat 相乘,即 0.1


解决方案

您需要使用float()account_balance_value 中的字符串 值转换为浮点数,然后打印结果如下:

print(float(account_balance_value) * 0.1)

参考

您可以在以下位置找到相关的详细讨论:

【讨论】:

    【解决方案2】:

    您的account_balance_value 似乎是一个字符串。试试

    print(float(account_balance_value) * 0.1)   
    

    【讨论】:

    • 重复答案。
    【解决方案3】:

    这可能是因为你的变量account_balance_value 是一个字符串。

    尝试添加:

    account_balance_value = float(account_balance_value)
    

    在运行其他代码之前将其转换为浮点数。

    如果这也不起作用,可能是因为它包含一个逗号,因此您必须在运行该代码之前分隔这两个值。

    【讨论】:

      【解决方案4】:

      出现此错误是因为变量 account_balance_value 是字符串类型。要执行任何数学运算,您必须使用函数 float() 将该变量转换为浮点类型。

      SYNTAX= float(variable name)
      

      这里,
      account_balance_value=float(account_balance_value) 是必须进行的更正。

      【讨论】:

        猜你喜欢
        • 2018-12-19
        • 2013-09-11
        • 2015-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-06
        • 2012-09-17
        相关资源
        最近更新 更多