Python中的取模与运算顺序
在Zed Shaw的《艰难的Python学习》(第15-16页)中,他有一个例子练习
100 - 25 * 3 % 4
结果是97(试试看!)
我看不出有什么运算顺序能得到这个结果……
100 - 25 = 75
3 % 4 = 0
或者说(100-25*3) = 225 % 4 = ??? 但我觉得结果不会是97……
还有一个类似的例子是3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
,结果是7
那这些运算是按照什么顺序进行的呢?
8 个回答
2
我找到了你第二个问题的答案,因为我也觉得这个问题很烦人——Zac的回答差不多,但1/4结果丢失的原因是因为Python 2.X在做整数除法时会截断结果。所以它先计算取余操作,然后再进行除法(由于结果不是浮点数,所以返回的是0)。
3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
3 + 2 + 1 - 5 + (0) - (0) + 6
6 - 5 + 6
1 + 6
7
3
乘法 >> 取模 >> 减法
In [3]: 25 * 3
Out[3]: 75
In [4]: 75 % 4
Out[4]: 3
In [5]: 100 - 3
Out[5]: 97
乘法和取模运算的优先级是一样的,所以在这个例子中,你要从左到右进行计算。
32
在第一个例子中,*
和 %
的优先级比 -
高,所以我们先计算 25 * 3 % 4
。*
和 %
的优先级是一样的,而且都是从左到右计算,所以我们从左边开始计算,先算 25 * 3
,结果是 75
。接下来我们计算 75 % 4
,结果是 3
。最后,100 - 3
的结果是 97
。