Ash*_*ton 3 python math python-3.x
我的问题看起来像这样:
10-7//2*3+1
Run Code Online (Sandbox Code Playgroud)
我应该解决方程式。
当我使用PEMDAS时,我的答案似乎是8
First its's 2*3 = 6; 10-7//6+1
second = 7//6= 1; 10-1+1
Third = 10-8 = 8;
Run Code Online (Sandbox Code Playgroud)
但是当将其放入python时,我得到了2。为什么?
看来程序顺序是这样的:
first: 7//2=3; 10-3*3+1
second: 3*3=9; 10-9+1
third:10-9+1= 2; 2
Run Code Online (Sandbox Code Playgroud)
我不明白
Ror*_*ton 14
PEMDAS 更好地表示为
P Parentheses, then
E Exponents, then
MD Multiplication and division, left to right, then
AS Addition and subtraction, left to right
Run Code Online (Sandbox Code Playgroud)
所以在你的表达式中,除法应该在乘法之前完成,因为它在乘法的左边。做完这些之后,先做减法,再做加法。
Mar*_*ers 10
PEMDAS是P,E,MD,AS; 乘法和除法的优先级相同,加减法也一样。当除法运算符在乘法之前出现时,除法先行。
Python运算符的执行顺序由运算符Priority决定,并遵循相同的规则。具有较高优先级的运算符将在具有较低优先级的运算符之前执行,但是当它们在同一组中时,它们具有匹配的优先级。
对于10-7//2*3+1,您有2种运算符,从最低到最高:
+, - (与AS== 加减法相关)*, @, /, //, % (与关联MD,因此相乘和相除)。所以//和*首先执行;乘法和除法属于同一组,此处不是固定顺序(MD并不意味着乘法先于除法):
10 - ((7 // 2) * 3) + 1
Run Code Online (Sandbox Code Playgroud)
7 // 2首先执行So ,然后乘以3。然后从10中减去,最后加1。
我们已经解决了一个问题,该问题不会影响您的特定情况,但是对于编写实际的Python程序非常重要。PEMDAS并不是真正意义上的操作顺序。它不会决定事物的评估顺序。这实际上是关于参数分组。PEMDAS表示a + b + c * d被评估为(a + b) + (c * d),但是没有说是否a + b或c * d首先被评估。
在数学中,只要尊重参数分组,先评估什么都没有关系。在Python中,如果你evaluted b()并c()首先在a() + (b() + c())仅仅因为他们是在括号中,你可以得到完全不同的结果,因为Python的功能可能有副作用。
Python表达式评估通常从左到右进行。例如,在中a() + b() + (c() * d()),评估顺序如下:
a()b()+,现在它的参数已经准备好了c()d()*,现在它的参数已经准备好+,既然它的论证已经准备好了尽管*乘法的优先级很高,并且在乘法运算符周围都有括号。
Python 中的运算顺序是如何进行的?
我不知道 aPE(MD)(AS)是什么,但 Python 的操作顺序(优先顺序)规则按照官方文档中的“运算符优先级”表所述进行。:)
请记住,许多运算符优先级规则在 Python 中与在 C或C++ 中的情况相反,但以下是 Python 3 中的“运算符优先级”规则:
要阅读表中的所有脚注,请单击上面的链接。
| 归档时间: |
|
| 查看次数: |
10882 次 |
| 最近记录: |