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

Python读取txt生成字典执行monthly命令报IndexError问题求助

问题排查与修复方案

错误根源

你遇到的IndexError由两处逻辑错误共同导致:

  • readFromFile函数逻辑错误:单行文本调用split()后已经得到了月份(key)和销售额(value)两个独立字符串,你后续又对单独的销售额字符串执行split(),导致字典中存入的value是长度为1的列表(比如'9762'变成['9762']),没有索引为1的元素。
  • Monthly函数遍历逻辑错误:你遍历的是字典的values(),拿到的只有销售额数据,根本不存在月份信息,强行取row[1]必然触发越界,后续用row[0]、row[1]作为key查询字典的逻辑也和你设计的字典结构完全不匹配。

修复代码

FileIO模块readFromFile函数修复

def readFromFile():
    with open(FILENAME, 'r', newline="") as file:
        myDict = {}
        for line in file:
            # 分割后直接转int存入,无需再对value做split
            key, value = line.split()
            myDict[key] = int(value)
        print(myDict)
    return myDict

主程序Monthly函数修复

def Monthly(mSales):
    # 遍历字典的键值对,直接拿到月份和对应销售额
    for month, sales in mSales.items():
        print(f"{month}\t{sales}")
    print()

其他开发建议

  • 主程序中用到的commands变量未定义,你需要提前定义合法命令列表,比如commands = ['monthly', 'yearly', 'edit', 'leave'],避免执行时报未定义错误。
  • 后续开发Yearly函数时,直接对字典的values求和即可得到年度总销售额,除以12就能得到月均销售额。
  • 开发Edit函数修改销售额后,记得调用writeToFile函数把修改后的字典写入文件,保证下次启动数据不丢失。
  • 可以加异常捕获逻辑,比如读取文件时如果某行格式错误,跳过该行并提示,避免程序直接崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:57:06