我在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
这显然是错误的,但任何人都可以帮助我解决数学等问题吗?如果它不在括号内,我似乎已经忘记了一切!
编辑:非常感谢您的回复。我已经清楚地了解了一些非常基本的东西,我认为这些东西在继续之前很重要!我的操作顺序肯定是关闭的!答案 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 % 2
是0
,因为将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中的运算符优先级表。
答案 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