Python如何给佣金数组添加£符号并正确打印销售统计表格
问题根因
- 你错误地将存储所有员工佣金的列表拼接成了单个完整字符串,
zip迭代字符串时会逐字符拆分,导致每个员工只能匹配到字符串的单个字符,因此仅显示第一个字符£ - 比如单员工佣金为1000时,
commission2会变成"£1000",zip时会拆分为['£', '1', '0', '0', '0'],和员工列表匹配时只有第一个员工能拿到£,后续字符没有对应员工,数值自然缺失
修复方案
替换print_entered_info函数中错误的佣金处理逻辑,直接生成带£符号的佣金列表即可:
def print_entered_info(names, ids, num_sold_houses): print() row_width = 12 comission_per_house = 500 header = ['Name', 'Id', 'Houses Sold', 'Commission'] print(' '.join(f'{h:<{row_width}}' for h in header)) commission = [n * comission_per_house for n in num_sold_houses] # 此处修改为生成每个员工对应的带£的佣金列表,不要拼接成单个字符串 commission2 = [f"£{c}" for c in commission] # 可删除原来的join拼接逻辑和单独print commission2的测试代码 for values in zip(names, ids, num_sold_houses, commission2): print() print(' '.join(f'{v:<{row_width}}' for v in values)) # 后续原有逻辑保持不变即可
额外优化建议
- 原有代码中
if bonus >= max(commission):的判断完全冗余,因为bonus = max(commission),这个判断永远为真,可直接删除判断语句,保留里面的逻辑即可 - 变量名拼写小问题:
comission_per_house正确拼写应为commission_per_house,不影响运行但建议修正
内容的提问来源于stack exchange,提问作者Kieran Spencer
相关产品推荐
相关产品推荐

