You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求斐波那契偶数和时函数返回列表重复输出两次的原因是什么?

问题原因
  • 你定义的list_of_numbers是全局变量,fibb_sequence()函数每次调用时都没有清空该列表,而是直接在已有内容后追加新的斐波那契项
  • 你的代码里一共调用了两次fibb_sequence():第一次是print(fibb_sequence())这行,此时list_of_numbers已经被填充为10项斐波那契数;第二次是sum_added_values()内部调用该函数,此时会再往list_of_numbers里追加一遍10项斐波那契数,最终列表里存了两份完整的斐波那契数列
  • 筛选偶数项时自然会得到两份重复的偶数结果
修复方案

不要使用全局变量存储斐波那契计算结果,改为在fibb_sequence()函数内部初始化列表,每次调用都返回全新的结果列表,避免多次调用的内容累加,同步把存储偶数项的sum_of_numbers也改为函数内部变量,避免全局变量污染。
修正后的代码如下:

number_sequence = 10

def fibb_sequence():
    # 每次调用都初始化新的列表
    list_of_numbers = []
    current_term = 2
    previous_term = 1
    list_of_numbers.append(previous_term)
    list_of_numbers.append(current_term)

    for i in range(2, number_sequence):
        new_num = current_term + previous_term
        previous_term = current_term
        current_term = new_num
        list_of_numbers.append(new_num)

    return list_of_numbers

def sum_added_values():
    # 偶数列表也放在函数内部初始化
    sum_of_numbers = []
    for i in fibb_sequence():
        if (i % 2) == 0:
            sum_of_numbers.append(i)
    print(sum_of_numbers)


print(fibb_sequence())
sum_added_values()

内容的提问来源于stack exchange,提问作者zampoan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:27:00