Python数学运算符序列

2024-06-28 19:20:10 发布

您现在位置:Python中文网/ 问答频道 /正文

a=0
b=5

当我们试图得到这个结果时:

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:

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

结果为零:

0

我们应该得到总是除以y的零误差吗(因为(b*a)是零)?你知道吗


Tags: orinmostlineintegercallfile误差
3条回答

(23-11)/a*b的求值分解如下:((23-11)/a)*b

见:Operator precedence

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)变成

enter image description here

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

enter image description here

相关问题 更多 >