天黑收衣服 发表于 2017-10-6 19:03:05

两者不是相同吗怎麽结果不同

本帖最后由 天黑收衣服 于 2017-10-6 19:16 编辑

a, b = 0,1    #打印出来a = 0,b = 1
total = 0
while True:
    a, b = b, a + b#这裡就不是应该等同a = b,   b = a + b吗
    if b >= 4000000:
      break
    if b % 2 == 0:
      total += b
print (a)
print (b)
print (total)


为什麽循环体中
a, b = b, a + b
改成
a = b
b = a + b
输出结果是不同的呢
两者不是相同但不同写法吗
这问题会太笨吗

冬雪雪冬 发表于 2017-10-6 19:30:34

a, b = b, a + b

a = b
b = a + b
的差别可以理解成同时和依次。
如果原来a和b的值分别为1和2
则a, b = b, a + b后,a和b的值变为2和3
而a = b后a值为2
b = a + b后b值为4
即前一个写法右边的a仍为1,后一个写法右边的a已经变成了2

新手·ing 发表于 2017-10-6 19:31:45

a, b = b, a + b
这个情况下,a先是被赋值b的值即1,此时a=1,然后把a+b的值赋值给b,这是a还是0(不要问为什么),所以b=1+0=1
a = b
b = a + b
这个情况下,a=1,然后b=a+b时a=1,所以b=1+1=2
所以不一样

天黑收衣服 发表于 2017-10-7 00:53:29

本帖最后由 天黑收衣服 于 2017-10-7 00:54 编辑

冬雪雪冬 发表于 2017-10-6 19:30
a, b = b, a + b

a = b


非常感谢{:5_92:}
完全懂了

天黑收衣服 发表于 2017-10-7 00:56:07

新手·ing 发表于 2017-10-6 19:31
这个情况下,a先是被赋值b的值即1,此时a=1,然后把a+b的值赋值给b,这是a还是0(不要问为什么),所以b= ...

非常感谢大大{:5_92:}

水云 发表于 2017-10-9 11:12:27

我看第49课教程,也是卡在这里,半天,版主大大的解释,终于搞明白了
页: [1]
查看完整版本: 两者不是相同吗怎麽结果不同