在Python中进行算术运算,无法解决简单的基本操作
我正在做一些非常基础的Python练习。我在用一本叫《用最难的方法学Python》的书,这本书的第三个练习有一个表达式我需要理解。
这个表达式是 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6,结果是7。
对我来说,答案是6。
我算的过程是 6 - 5 + 0 - 1 / 4 + 6。
然后我得到了 1 - 1 / 4 + 6。
最后我得到了6。
这显然是错的,但有没有人能帮我解释一下数学中的优先级等等?我好像忘记了所有的规则,尤其是没有括号的时候!
编辑:非常感谢大家的回复。我明显学到了关于基础知识的一些东西,我觉得在继续之前了解这些是很重要的!我的运算顺序确实搞错了!
10 个回答
2
查看Python中运算符的优先级表。
3
如果我们看看Python中运算符优先级的规则,我们可以发现:
3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
实际上是被处理成:
3 + 2 + 1 - 5 + (4 % 2) - (1 / 4) + 6
(对于算术运算符,这个顺序和数学中的标准运算顺序是一样的。)
现在,4 % 2
的结果是0
,因为4除以2的余数是0。1 / 4
的结果也是0
,因为Python会返回和操作数相同类型的值,而0.25向下取整后是0。
所以我觉得你的错误在于把/
运算应用到了左边的整个表达式上。实际上,由于/
的优先级比-
高,所以计算时先进行的是1 / 4
。
5
4 % 2 = 0 是因为4除以2的余数是0。
1 / 4 也是0,因为这里是整数除法,0.25会被向下取整到0。