我不确定这个问题的适当方向是什么,这也是一个重复的问题.所以请相应指导.
我是python编程的新手.我有这个简单的代码来生成Fibonacci系列.
1: def fibo(n):
2: a = 0
3: b = 1
4: for x in range(n):
5: print (a, end=' ')
6: #a, b = b, a+b
7: a = b
8: b = a+b
9: print()
10: num = int(input("enter n value: "))
11: print(fibo(num))
Run Code Online (Sandbox Code Playgroud)
如果我按原样执行上面的代码,我得到的结果如下
enter n value: 10
0 1 2 4 8 16 32 64 128 256
Run Code Online (Sandbox Code Playgroud)
如果取消注释#6和注释行#7和#8,我得到的结果是实际的fibo系列.
enter n value: 10
0 1 1 2 3 5 8 13 21 34
Run Code Online (Sandbox Code Playgroud)
我想知道它们之间有什么区别
a, b = b, a + b
Run Code Online (Sandbox Code Playgroud)
和
a = b
b = a + b
Run Code Online (Sandbox Code Playgroud)
使用的编程IDE:PyCharm Community 2017.3
a = b
b = a + b
Run Code Online (Sandbox Code Playgroud)
实际上是:
a = b
b = b + b
Run Code Online (Sandbox Code Playgroud)
你想要的是:
a = b
b = old_value_of_a + b
Run Code Online (Sandbox Code Playgroud)
当你这样做时
a, b = b, a + b
,确实在做:
tmp_a = b
tmp_b = a + b
a = tmp_a
b = tmp_b
Run Code Online (Sandbox Code Playgroud)
这就是你想要的