斐波那契数组处理函数异常:文件生成数量与命名不符求助
问题分析与解决方案
核心问题
- 斐波那契数列生成不完整:你的
fibArray函数只生成了5个元素,因为循环条件find < N(当N=7时,find从2到6,共5次循环),而且初始的0和1没有加入数组,导致总长度不够7。 - 文件名逻辑错误:你预期文件名是
fib-number-1.txt到fib-number-7.txt(按序号命名),但当前代码用斐波那契数作为文件名的标识,完全不符合需求。 - 冗余代码:
with open语句会自动关闭文件,不需要手动调用file.close()。
修正后的代码
def fibArray(N): fibarray = [] num1, num2 = 0, 1 # 先加入前两项 fibarray.append(num1) if N > 1: fibarray.append(num2) # 生成剩余的N-2项 for _ in range(N - 2): fibnum = num1 + num2 fibarray.append(fibnum) num1, num2 = num2, fibnum return fibarray def fibwritefile(fibarray): # 遍历数列,同时获取从1开始的序号 for idx, num in enumerate(fibarray, start=1): with open(f"fib-number-{idx}.txt", "w") as file: file.write(str(num)) # 生成7项斐波那契数列 fibarray = fibArray(7) fibwritefile(fibarray)
代码说明
fibArray函数:先手动加入前两项0和1,再通过循环生成剩下的N-2项,确保返回的数组长度正好是N。比如N=7时,返回[0,1,1,2,3,5,8]。fibwritefile函数:用enumerate(fibarray, start=1)获取从1开始的序号idx,以此作为文件名的标识,写入对应的斐波那契数num。- 移除了冗余的
file.close(),让with语句自动管理文件资源。
运行这段代码后,会生成7个文件:fib-number-1.txt(内容0)、fib-number-2.txt(内容1)、fib-number-3.txt(内容1)……直到fib-number-7.txt(内容8),完全符合你的预期。
内容的提问来源于stack exchange,提问作者JnooriRS
相关产品推荐
相关产品推荐

