2024-05-12 17:00:45 发布
网友
在Zed Shaw的Learn Python the Hard Way(第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
3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
手术按什么顺序进行?
对于第一个示例:*和%优先于-,因此我们首先计算25 * 3 % 4。*和%从左到右具有相同的优先级和关联性,因此我们从左到右进行计算,从25 * 3开始。这产生75。现在我们计算75 % 4,得到3。最后,100 - 3是97。
*
%
-
25 * 3 % 4
25 * 3
75
75 % 4
3
100 - 3
97
我找到了你第二个问题的答案,因为它也困扰着我——Zac的回答很接近,但是1/4结果的丢失是因为Python2.X正在截断整数除法结果。所以它首先计算模运算,然后除法(因为它不是浮点数,所以返回为0)。
3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6 3 + 2 + 1 - 5 + (0) - (0) + 6 6 - 5 + 6 1 + 6 7
乘法>;>;mod>;>;减法
In [3]: 25 * 3 Out[3]: 75 In [4]: 75 % 4 Out[4]: 3 In [5]: 100 - 3 Out[5]: 97
乘法和模运算符具有相同的优先级,因此在本例中从左到右求值。
对于第一个示例:
*
和%
优先于-
,因此我们首先计算25 * 3 % 4
。*
和%
从左到右具有相同的优先级和关联性,因此我们从左到右进行计算,从25 * 3
开始。这产生75
。现在我们计算75 % 4
,得到3
。最后,100 - 3
是97
。我找到了你第二个问题的答案,因为它也困扰着我——Zac的回答很接近,但是1/4结果的丢失是因为Python2.X正在截断整数除法结果。所以它首先计算模运算,然后除法(因为它不是浮点数,所以返回为0)。
乘法>;>;mod>;>;减法
乘法和模运算符具有相同的优先级,因此在本例中从左到右求值。
相关问题 更多 >
编程相关推荐