首页 > 解决方案 > TypeError:不能通过乘法将序列乘以“浮点”类型的非整数

问题描述

我使用屏幕刮板来获取我的帐户余额的值,我想获得该值的 10%,但它给出了这个错误:TypeError: can't multiply sequence by non-int of type '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

我在这里做错了什么?

标签: pythonpython-3.xselenium

解决方案


get_attribute(attribute_name)将返回一个字符串。字符串account_balance_value类型也是如此,因此您可以进一步使用以下方式操作字符串:replace()

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

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

print(account_balance_value)  

您正在打印一个字符串,并且不能将字符串 account_balance_value浮点数相乘,即0.1


解决方案

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

print(float(account_balance_value) * 0.1)

参考

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


推荐阅读