变量赋值差异

问题描述 投票:0回答:2

我目前正在练习生成给定斐波那契数的位置。

我最初的代码是:

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 是正确的。

python for-loop while-loop variable-assignment fibonacci
2个回答
1
投票

在执行作业之前,将对右侧进行全面评估。在第二个片段中,您首先添加 a+b,然后分配

a=b
和 b=
a+b
,其中
a
的值在 before 之前获取,并被
b
覆盖。

在第一个片段中,

a
b
覆盖,然后
b
被分配为
a+b
,这只是使其值加倍。

如果您想分隔分配以获得更好的可读性,您可以使用临时变量:

tmp = a + b
a = b
b = tmp

0
投票

我在这里看到的非常重要的区别是“print(max(new_list))”。这里请求列表中的最大数量,这将为您提供您需要的唯一数量。

© www.soinside.com 2019 - 2024. All rights reserved.