基本上,我不确定为什么:
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的结果,那么为什么抽象会导致值有所不同?
答案 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.0
,True
被提升为1
,总和返回45
,然后加上0.0
会将int提升为浮动。
答案 1 :(得分:0)
该代码似乎可以正常工作, 由于左表达式(红色+绿色)与右表达式(紫色[红色+绿色] + 0)匹配,因此第一个打印为假。
由于检查了两个表达式是否相同(在两个表达式之间使用!=),所以您得到False。
我认为您对python检查条件的方式感到困惑。 当您使用比较操作数时,python首先会评估操作数的两面,然后再比较两面。
您写了“因为绿色!=紫色也得出True的结果”,但实际比较是“(红色+绿色)!=紫色”。