Python初学者求助:实现带序号的斐波那契数列输出
问题修正方案
你的代码主要存在两个问题:一是第一个斐波那契数未打印,二是所有输出都缺少序号。既然还没学enumerate,直接用循环里的n就能充当序号,不需要额外嵌套循环。
修正后的代码如下:
pre_previous_fib = 0 previous_fib = 1 num = int(input("How many Fibonacci numbers do you want? ")) for n in range(1, num + 1): if n == 1 or n == 2: # 斐波那契数列前两个数固定为1 current_fib = 1 else: current_fib = pre_previous_fib + previous_fib pre_previous_fib = previous_fib previous_fib = current_fib # 利用循环变量n作为序号,按要求格式打印 print(f"{n}. {current_fib}")
代码说明:
- 合并前两个数的判断逻辑,直接赋值为1,贴合斐波那契数列的常规起始规则
- 每个循环都执行打印操作,确保所有数字都输出,且带上对应序号
n - 调整变量名为
current_fib,比原new_fib更直观,便于理解逻辑
测试输入7时,输出将完全符合你的要求:
How many Fibonacci numbers do you want? 7
- 1
- 1
- 2
- 3
- 5
- 8
- 13
另外你之前尝试用另一个循环遍历new_fib报错,是因为new_fib是单个数值,并非列表、元组这类可迭代对象,循环只能遍历可迭代集合,所以会触发“不可迭代”的错误。
内容的提问来源于stack exchange,提问作者emkay
相关产品推荐
相关产品推荐

