算术在python中,无法弄清楚简单的基本操作

时间:2012-02-07 15:30:02

标签: python math

我在python中做了一些非常基本的excersizes。我正在用艰难的方式来学习python book,在3中我有一个我应该理解的表达式。

3 + 2 + 1 - 5 + 4%2 - 1/4 + 6,即将出现为7。

对我来说,答案是6。

6 - 5 + 0 - 1/4 + 6

1 - 1/4 + 6

6

这显然是错误的,但任何人都可以帮助我解决数学等问题吗?如果它不在括号内,我似乎已经忘记了一切!

编辑:非常感谢您的回复。我已经清楚地了解了一些非常基本的东西,我认为这些东西在继续之前很重要!我的操作顺序肯定是关闭的!

10 个答案:

答案 0 :(得分:6)

4%2 = 0,因为4/2的余数为0

1/4也是0,因为它正在进行整数除法,.25被置于0。

答案 1 :(得分:3)

如果我们查看rules for Operator precedence in Python,我们可以看到:

3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6

被视为:

3 + 2 + 1 - 5 + (4 % 2) - (1 / 4) + 6

(对于算术运算符,这与数学中standard order of operations的顺序相同。)

现在4 % 20,因为将4除以2的余数为0. 1 / 4也是0,因为Python将返回与当“floored”为0时,操作数和0.25。

所以我认为你的错误是将/应用于左边的整个表达式。事实上,/的优先级高于-,所评估的分部为1 / 4

答案 2 :(得分:2)

1/4向下(或地板)舍入到0,因为1和4是整数。 因此1-0+6 = 7

答案 3 :(得分:2)

请参阅Python中的运算符优先级表。

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

答案 4 :(得分:1)

您似乎认为python应该先评估/运算符左侧的所有内容,然后再将第一个标记划分到右侧。无论如何,这将是一个奇怪的评估顺序。

与编程一样:如果你有一个带有中缀运算符的复杂表达式,请使用括号来强制正确的顺序。

答案 5 :(得分:1)

如果你不使用括号,优先级是除法和乘法!

这样:1-1 / 4 + 6 = 7因为1/4,使用整数,是= 0

答案 6 :(得分:1)

在Python3.x中,它是6.75 b / c 1/4 = 0.25(真正的除法)。但是,在Python 2.x 1/4 = 0(转换为使用的最通用类型的参数,在给定的情况下是int)。因此,如果它是1. / 4或1 / 4.那么在Python2.x中你得到0.25,结果将是6.75

答案 7 :(得分:0)

操作数是整数,因此1/4整数除以= 0

答案 8 :(得分:0)

你应该看一下运算符,而不是数学:

a%b是模块化的b,在a = 4且b = 2的情况下产生0(好的,谢谢数学;))

1/4:重要的是要考虑到1和4是整数。因此结果也将是一个整数,即0.25变为0.

这就是你最终

的原因
  3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
= 3 + 2 + 1 - 5 +   0   -   0   + 6
=                                 7

对于python中的运算符,请查看the python docs

答案 9 :(得分:0)

3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6

此优先顺序是从左到右计算乘法和除法,然后加法和减法。所以..

3 + 2 + 1 - 5 + (4 % 2) - (1 / 4) + 6

由于操作顺序,首先评估括号内的那些。因为你只有整数存在(而不是一个允许值为0.25的浮点数),因为python,1/4将会降为0。

3 + 2 + 1 - 5 + 0 - 0 + 6

之后,当您从左到右进行加法/减法评估时,您将获得:

6 - 5 + 6  => 1 + 6 => 7

请记住,在加法和减法之前评估除法和乘法。有关详细信息,请Order of Operations - Wikipedia