我目前正在练习生成给定斐波那契数的位置。
我最初的代码是:
n = int(input())
a = 0
b = 1
new_list = []
for i in range(n+1):
new_list.append(a)
a = b
b = a + b
print(new_list)
但是,执行代码的正确方法是:
n = int(input())
a = 0
b = 1
new_list = []
for i in range(n+1):
new_list.append(a)
a, b = b, a + b
print(max(new_list))
a,b = b, a + b 和 a = b, b += a 分行写有什么区别?
我向 ChatGPT 寻求帮助,但我不太明白我的代码和更正后的代码之间的区别,因为我的代码返回错误的答案,而 ChatGPT 是正确的。
在执行作业之前,将对右侧进行全面评估。在第二个片段中,您首先添加 a+b,然后分配
a=b
和 b=a+b
,其中 a
的值在 before 之前获取,并被 b
覆盖。
在第一个片段中,
a
被b
覆盖,然后b
被分配为a+b
,这只是使其值加倍。
如果您想分隔分配以获得更好的可读性,您可以使用临时变量:
tmp = a + b
a = b
b = tmp
我在这里看到的非常重要的区别是“print(max(new_list))”。这里请求列表中的最大数量,这将为您提供您需要的唯一数量。