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

Python销售佣金报表问题:如何每行打印结果并留存所有输入数据

问题分析与解决

问题根源

你的代码存在三个核心问题:

  • 数据收集逻辑错误:所有数据处理(佣金计算、添加到列表)都在while循环外部执行,导致仅能捕获最后一次输入的销售数据,且此时sale_person已经被更新为-1,最终列表里只有ID为-1的一条记录。
  • 佣金规则不符合预期:当前代码里的佣金是固定数值(比如10、20),但预期输出里是销售额的百分比(比如23.0的10%是2.30),规则理解有误。
  • 输出格式不匹配:预期输出用制表符对齐,总和用逗号分隔,而当前用竖线分隔,格式不一致。

修改后的代码

sale_list = []
commission_list = []

# 初始化总计变量
total_table_sales = 0.0
total_desk_sales = 0.0
total_chair_sales = 0.0
total_table_comm = 0.0
total_desk_comm = 0.0
total_chair_comm = 0.0

sale_person = int(input("Please input salesperson ID or -1 to end: "))

while sale_person != -1:
    # 输入并验证桌子销售额
    table_sales = float(input("Enter table sales: "))
    while table_sales < 0:
        print("Invalid: Enter valid table sales")
        table_sales = float(input("Enter table sales: "))
    
    # 输入并验证办公桌销售额
    desk_sales = float(input("Enter desk sales: "))
    while desk_sales < 0:
        print("Invalid: Enter valid desk sales")
        desk_sales = float(input("Enter desk sales: "))
    
    # 输入并验证椅子销售额
    chair_sales = float(input("Enter chair sales: "))
    while chair_sales < 0:
        print("Invalid: Enter valid chair sales")
        chair_sales = float(input("Enter chair sales: "))
    
    # 计算佣金(匹配预期输出的百分比规则:桌子10%,办公桌15%,椅子5%)
    table_commission = table_sales * 0.10
    desk_commission = desk_sales * 0.15
    chair_commission = chair_sales * 0.05
    
    # 更新总计
    total_table_sales += table_sales
    total_desk_sales += desk_sales
    total_chair_sales += chair_sales
    total_table_comm += table_commission
    total_desk_comm += desk_commission
    total_chair_comm += chair_commission
    
    # 将当前销售记录和佣金记录加入列表
    sale_list.append((sale_person, table_sales, desk_sales, chair_sales))
    commission_list.append((sale_person, table_commission, desk_commission, chair_commission))
    
    # 输入下一个销售ID或结束
    sale_person = int(input("Please input salesperson ID or -1 to end: "))

# 打印销售表
print("\nID,Table Sales,Desk Sales,Chair Sales")
for person_id, tb, dk, ch in sale_list:
    print(f"{person_id}\t{tb:.1f}\t{dk:.1f}\t{ch:.1f}")
print(f"Total,{total_table_sales:.2f},{total_desk_sales:.2f},{total_chair_sales:.2f}")

# 打印佣金表
print("\nCommission Table:")
print("ID,Table Commission,Desk Commission,Chair Commission")
for person_id, tb_comm, dk_comm, ch_comm in commission_list:
    print(f"{person_id}\t{tb_comm:.2f}\t{dk_comm:.2f}\t{ch_comm:.2f}")
print(f"Total,{total_table_comm:.2f},{total_desk_comm:.2f},{total_chair_comm:.2f}")

修改说明

  • 将数据处理(佣金计算、添加列表、总计更新)移入while循环内部,确保每次输入的销售数据都被及时记录。
  • 修正佣金计算逻辑,改为按销售额百分比计算(完全匹配预期输出的数值比例)。
  • 调整输出格式,与预期输出的对齐方式、分隔符保持一致。
  • 用元组存储每条记录,避免字符串拆分的繁琐操作,代码更易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:33:17