首页 > 解决方案 > Python添加布尔和整数抽象

问题描述

基本上,我不确定为什么:

red, green = 44, 43
purple = red + green
print(red + green != purple + purple / purple - red % green)
// Returns False
// Essentially => red + green != purple + 0.0

print(red + True + 0.0) // Returns 45.0

我不确定是什么导致了这种差异?由于 green != Purple 也给出了 True 的结果,那么为什么抽象会导致值的差异?

标签: pythonintboolean

解决方案


您弄错了运算符优先级规则。本质上,表达式的评估如下:

red + green != purple + purple / purple - red % green
 = 44 + 43 != 87 + 87 / 87 - 44 % 43   # substitution
 = 87 != 87 + 1 - 1                    # perform / and % first
 = 87 != 87                            # sum
 = False                               # not equal

至于第二个,red + True + 0.0,True被提升为1,并且总和返回45,然后添加0.0将 int 提升为浮点数。


推荐阅读