Python不使用pandas读取TXT文件计算指定字段总和问题问询
TXT文件指定字段求和Python代码修复方案
原代码问题说明
- 未定义全局累加的总销售额变量,
getTotal函数无法访问循环内的personTotal局部变量,且sum()为序列求和方法,直接传入单个销售额数值用法错误 - 调用
getTotal时未加括号,仅将函数对象赋值给total变量,未实际执行计算逻辑 - 缺少单条记录销售额累加入总销售额的对应流程
修复后可运行代码
def main(): # 初始化总销售额为0 total = 0 print("%-8s %-21s %-6s %10s %14s" % ("Name", "Item", "Price", "Quantity", "Person Total")) # with语句自动管理文件关闭,避免资源泄露 with open("makewaves.txt", "r", encoding="utf-8") as f: for line in f: # 先去除首尾空白、换行符再拆分字段 name, item, price, quantity = line.strip().split(",") price = float(price) quantity = int(quantity) # 计算单条记录销售额 personTotal = price * quantity # 累加至总销售额 total += personTotal print() print("%-8s %-21s $%-5.2f %6d %14.2f" % (name, item, price, quantity, personTotal)) print() # 格式化输出总金额,保留两位小数 print(" Total sales are : $%.2f" % total) if __name__ == "__main__": main()
核心修改点
- 移除冗余的
getTotal函数,直接在循环内完成累加操作,逻辑更简洁 - 新增总销售额变量
total初始化为0,每次计算完单条销售额后同步累加 - 改用
with语法打开文件,执行结束后自动关闭文件,避免异常场景下的资源泄露 - 新增
strip()处理每行的换行符、首尾空格,避免字段拆分错误 - 优化总销售额输出格式,固定保留两位小数,符合金额类数据的展示规范
内容的提问来源于stack exchange,提问作者ThatShtCray
相关产品推荐
相关产品推荐

