如何用Python将0到50期对应的k值写入CSV文件
问题核心原因
你原来的代码存在两个核心错误:
- 计算k值的循环里只打印了结果,没有把每期的i和k对应关系存储下来,写CSV的时候只能拿到最后一期的i和k值
- 写入CSV的
for a, b in range(i,k)逻辑完全错误:range只接受整数参数,也无法直接迭代出两组对应数值
修正后可直接运行的代码
import csv delta, s, theta = 0.08, 0.3, 0.35 # 初始化存储每期对应数据的列表,先存入0期初始值 data = [] k = 2.5 data.append((0, k)) # 计算1-50期k值,逐组存入列表 for i in range(1, 51): k = (1 - delta) * k + s * k ** theta print(f"{i:3d}: {k}") data.append((i, k)) # 写入CSV文件 with open('capital.csv', 'w', newline='', encoding='utf-8-sig') as csvfile: fieldnames = ['col1', 'col2'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for a, b in data: writer.writerow({'col1': a, 'col2': b})
补充说明
- 加
encoding='utf-8-sig'参数是为了适配Excel,打开CSV时不会出现中文乱码 - 如果你需要调整表头内容,直接修改
fieldnames和writerow里的键名即可
内容的提问来源于stack exchange,提问作者pao
相关产品推荐
相关产品推荐

