调用edit后执行monthly报NoneType不可迭代错误的排查求助
报错原因
你的Edit函数没有显式设置返回值,Python中所有无return语句的函数默认返回None。主函数中monthlySales = Func.Edit(monthlySales)这行代码,会把原本存储销售数据的嵌套列表直接覆盖为None,后续调用monthly命令需要遍历该变量时,就会触发NoneType不可迭代的报错。
另外你还有一处逻辑错误:非法命令的判断语句写法错误,elif command != 'exit' or 'monthly' or 'yearly' or 'edit': 会永远返回真,不管输入什么内容都会先提示无效命令。
修复方法
- 处理Edit函数的赋值问题,二选一即可:
- 直接删掉主函数中调用Edit时的赋值操作,改为
Func.Edit(monthlySales)即可。因为列表是Python中的可变对象,在Edit函数内修改列表元素会直接同步到外部的原列表,不需要接收返回值。 - 如果你要保留赋值写法,在
Edit函数最后新增一行return mSales,显式返回修改后的销售列表。
- 直接删掉主函数中调用Edit时的赋值操作,改为
- 把最后那段非法命令判断替换为
else兜底即可,前面已经覆盖了所有合法命令的判断分支,不需要额外写复杂的判断语句。
修复后的核心代码片段
主函数调用部分
elif command == 'edit': # 去掉赋值即可 Func.Edit(monthlySales) # 直接用else兜底非法命令 else: print("Invalid command.")
内容的提问来源于stack exchange,提问作者Cody Rice
相关产品推荐
相关产品推荐

