2014-09-21 73 views
3

我疑惑下列要求:Python:是a,b = 1,2和a = 1; b = 2严格等价吗?

这工作:

a, b = 1071, 1029 
while(a%b != 0): 
    a, b = b, a%b 

但是,下面的代码片段返回ZeroDivisionError错误消息:

a, b = 1071, 1029 
while(a%b != 0): 
    a = b; b = a%b 

,而我预计双方将严格当量。

任何人都可以抛出这个灯吗?

+3

你为什么在标题中提出一个问题,在文本中提出一个完全不同的问题? – 2014-09-21 16:47:47

+0

这是同一个问题 – tagoma 2014-09-21 17:02:26

+1

他们不是同一个问题,但是只有当你明白'a,b = 1,2,'是如何工作的时候,这才会显而易见,这将排除提问:) – chepner 2014-09-21 17:10:48

回答

10

号在

a, b = b, a%b 

右手侧被评估成元组第一,所以a%b使用的a原始值来计算。与此相反,

a = b; b = a%b 

a%b之后a作为被分配的b值来计算,分配不同的结果b

+0

thx。很明显......现在。 :) – tagoma 2014-09-21 17:05:14

相关问题