关于数学:python数学运算符序列

Python mathematical operators sequence

本问题已经有最佳答案,请猛点这里访问。
1
2
a=0
b=5

当我们试图得到结果时:

1
print str((23-11)/a*b)

我们得到除以零的误差。

Traceback (most recent call last): File"", line 1, in

print str((23-11)/a*b) ZeroDivisionError: integer division or modulo by zero
But if we change positions:

1
print str((23-11)/b*a)

结果为零:

0

我们是否应该总是除以y零误差(因为(b*a)是零)?


((23-11)/a*b)变为

enter image description here

((23-11)/b*a)变为

enter image description here


print str((23-11)/a*b)中,这就是发生的事情

1.计算23-11

2.将步骤除以A(0)

3.将步骤2乘以b(5)

正是第2步给出了零除法误差。

但是在print str((23-11)/b*a)中,这就是发生的事情

1.计算23-11

2.将步骤2除以5

3.将步骤3乘以0。

没有零除数错误,因为计算机除以5再乘以0,而不是除以0*5。这是因为按照操作顺序,乘法和除法具有同等的优先级,所以它们只是从左到右执行。


(23-11)/a*b的评价分解如下:((23-11)/a)*b

请参见:运算符优先级


它给你一个零,而不是一个错误,因为它除以第一个变量,再乘以第二个变量。例如,如果您将其更改为((23-11)/(ba)或((23-11)/(ab)),它也将返回除以0的错误。但现在它正在计算(23-11)/5*0,我想。