两者不是相同吗怎麽结果不同
本帖最后由 天黑收衣服 于 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
输出结果是不同的呢
两者不是相同但不同写法吗
这问题会太笨吗 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 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:54 编辑
冬雪雪冬 发表于 2017-10-6 19:30
a, b = b, a + b
和
a = b
非常感谢{:5_92:}
完全懂了 新手·ing 发表于 2017-10-6 19:31
这个情况下,a先是被赋值b的值即1,此时a=1,然后把a+b的值赋值给b,这是a还是0(不要问为什么),所以b= ...
非常感谢大大{:5_92:}
我看第49课教程,也是卡在这里,半天,版主大大的解释,终于搞明白了
页:
[1]