2014-09-21 69 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

相關問題