我目前正在进行一项练习,以求出给定斐波纳契数的位置.

我的初始代码是:

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覆盖.

在第一个代码片段中,ab覆盖,然后b被分配a+b,这只是它的值的两倍.

如果您希望分隔赋值以获得更好的可读性,则可以使用临时变量:

tmp = a + b
a = b
b = tmp

Python相关问答推荐

隐藏QComboBox的指示器(qdarkstyle)

如何使用关键参数按列对Pandas rame进行排序

如何在Power Query中按名称和时间总和进行分组

基本链合同的地址是如何计算的?

使用polars .滤镜进行切片速度比pandas .loc慢

列表上值总和最多为K(以O(log n))的最大元素数

Python 3.12中的通用[T]类方法隐式类型检索

使用SciPy进行曲线匹配未能给出正确的匹配

如何使用Python将工作表从一个Excel工作簿复制粘贴到另一个工作簿?

ModuleNotFound错误:没有名为flags.State的模块; flags不是包

输出中带有南的亚麻神经网络

在Polars(Python库)中将二进制转换为具有非UTF-8字符的字符串变量

如何将Docker内部运行的mariadb与主机上Docker外部运行的Python脚本连接起来

如何使用它?

从spaCy的句子中提取日期

部分视图的DataFrame

如何根据一列的值有条件地 Select 前N个组,然后按两列分组?

AES—256—CBC加密在Python和PHP中返回不同的结果,HELPPP

pandas:对多级列框架的列进行排序/重新排序

python panda ExcelWriter切换动态公式到数组公式