基本上我对Python很陌生,但我已经为Fibonacci序列编写了一个代码并且它不起作用,我已经在网上和它上面进行了比较,但是当我写的时候它有点不同,它的工作原理! - 但是我不知道为什么,任何人都能解释为什么它会这样表现吗?
此代码已在Python 3.3.2 Shell中构建和测试。
工作代码:
def fib(n):
a, b = 0, 1
while b < n:
print(b)
a, b = b, b + a
非工作代码:
def fib(n):
a = 0
b = 1
while b < n:
print(b)
a = b
b = b + a
我完全混淆了为什么它只在变量组合在一起时才有效,而不是在它们分开时。
答案 0 :(得分:4)
我相信它在a,b = b,b+a
行。
实际执行的版本做的事情有点不同。扩展形式将是:
c = a
a = b
b = b + c
由于b
增加了a
的初始值,而不是调整后的值。
答案 1 :(得分:2)
为了扩展Yeraze的答案,实际的任务更接近
# Make the tuple
a_b = (b, b+a)
# Unpack the tuple
a = a_b[0]
b = a_b[1]
因此更明显的原因是为什么设置然后分配值。