Zybooks Labs期末项目:斐波那契数列函数实现问题求助(得分13/25)
斐波那契函数代码错误排查
核心错误点
函数内部包含冗余打印输出
题目仅要求函数返回对应索引的斐波那契值,你的代码在函数内部额外打印了整个数列(如print("0 ", end="")、循环内的打印语句等)。Zybooks的测试用例只会校验函数返回值,多余的输出会干扰测试判定逻辑,直接导致扣分。边界情况处理错误
- 当
n=0时,按要求应返回0,但你的代码会直接走到最后打印c=1并返回1,完全不符合预期。 - 当
n=1时,虽然返回结果正确,但函数内部仍执行了不必要的打印操作,同时没有针对该边界做直接返回的优化。
- 当
计算逻辑存在冗余与错位风险
初始值c=1的设置多余,循环范围range(1,n)的逻辑不够清晰,虽然部分n值能返回正确结果,但整体逻辑存在错位隐患,且引入了不必要的中间变量。
修正后的代码
def fibonacci(n): if n < 0: return -1 if n == 0: return 0 if n == 1: return 1 a, b = 0, 1 for _ in range(2, n+1): a, b = b, a + b return b if __name__ == '__main__': start_num = int(input("Enter a number: ")) print(f'fibonacci({start_num}) is {fibonacci(start_num)}')
修正说明
- 移除函数内部所有打印语句,仅保留核心返回逻辑
- 明确处理
n<0、n=0、n=1的边界情况,确保直接返回正确值 - 调整循环范围为
range(2, n+1),从第2项开始计算到第n项,逻辑更直观 - 使用变量交换简化斐波那契计算,删除冗余中间变量
内容的提问来源于stack exchange,提问作者Alexis Rash
相关产品推荐
相关产品推荐

