在Python中进行算术运算,无法解决简单的基本操作

1 投票
10 回答
2176 浏览
提问于 2025-04-17 12:31

我正在做一些非常基础的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中运算符的优先级表。

http://docs.python.org/reference/expressions.html#summary

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。

撰写回答