Python添加布尔值和整数抽象

时间:2019-01-16 13:58:07

标签: python int boolean

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

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

我不确定是什么原因引起的?由于绿色!=紫色也给出True的结果,那么为什么抽象会导致值有所不同?

2 个答案:

答案 0 :(得分:1)

您误解了operator precedence规则。本质上,表达式的求值方式如下:

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.0True被提升为1,总和返回45,然后加上0.0会将int提升为浮动。

答案 1 :(得分:0)

该代码似乎可以正常工作, 由于左表达式(红色+绿色)与右表达式(紫色[红色+绿色] + 0)匹配,因此第一个打印为假。

由于检查了两个表达式是否相同(在两个表达式之间使用!=),所以您得到False。

我认为您对python检查条件的方式感到困惑。 当您使用比较操作数时,python首先会评估操作数的两面,然后再比较两面。

您写了“因为绿色!=紫色也得出True的结果”,但实际比较是“(红色+绿色)!=紫色”。