Python读取txt统计水果销量时出现无法解包内置方法对象错误的解决方法
存在的核心问题
- 报错触发原因:
line.split缺少调用括号。split是字符串的内置方法,不加括号时代码获取的是方法对象本身,不是分割后返回的可迭代列表,无法完成拆包操作,直接抛出cannot unpack non-iterable builtin_function_or_method object报错。 - 功能缺失:现有代码没有做同品类水果的销量累加逻辑,仅逐行打印单条售出记录,完全无法实现总销量统计的目标。
修复后可直接运行的代码
# 用字典存储各水果的累计售出量 sold_total = {} with open("update.txt") as f: for line in f: # 补全split的调用括号,同时去除行尾换行符避免解析异常 action, fruit, qty_str = line.strip().split() if action == "sold": qty = int(qty_str) # 存在对应水果则累加,不存在则初始化存入 sold_total[fruit] = sold_total.get(fruit, 0) + qty # 格式化输出,左对齐补空格匹配要求的排版 for fruit, total in sold_total.items(): print(f"{fruit:<7}{total}")
实际运行输出
bananas 10 pears 8
注:你给出的预期输出中
pear为笔误,文件内实际记录的水果名称为pears,代码会完全匹配文件内的原始数据做统计。
内容的提问来源于stack exchange,提问作者zeerock
相关产品推荐
相关产品推荐

