我有一个函数可以打印斐波那契级数
def fib(n):
""" print the fibonacci series up to n."""
a, b = 0, 1
while a < n:
print(a)
a, b = b, a + b
效果很好。但是,当我改变一些编码风格时,它并没有像我预期的那样工作。那么这里发生了什么?你知道吗
def fib(n):
""" print the fibonacci series up to n."""
a = 0
b = 1
while a < n:
print(a)
a = b
b = a + b
上面的代码并没有打印出和第一个代码相同的结果,但我可以在两个函数中看到相同的代码。我是python的初学者。你知道吗
是的,有不同的行为。在将
=
右侧的所有内容分配到=
左侧之前,对其进行求值。多重赋值只意味着在右边计算一个元组,然后在左边将它赋值给一个元组。你知道吗与
如果需要将所有赋值都放在单独的行上,则需要一个临时保持变量来交换
a
和b
:或者做一些花哨的事情来保持
b
和a
之间的差异:多重赋值是解决问题的“最正确”的方法,主要是因为它最简洁。你知道吗
在第二种方法中,您没有正确地交换值
直接的解决方案是:
在第一种方法中,首先计算加法,然后a变成b,b变成附加值。而在第二种方法中,您将附加值存储在其他变量中,然后按照上面的代码交换值。你知道吗
相关问题 更多 >
编程相关推荐