字典值提取与修改:员工2%涨幅薪资通知生成作业求助
修正你的薪资通知代码
咱们先聊聊你代码里的几个关键问题:
- 第一个循环里,你每次都把
newsal覆盖成当前员工的涨薪后薪资,但循环结束后newsal只会保留最后一个员工的结果,所以打印的时候所有人的新薪资都一模一样啦。 - 打印的字符串格式有问题:缺少名字后面的逗号,当前薪资需要固定显示两位小数,而且你用
%d格式化浮点数会丢失精度,应该用对应浮点数的格式符。 - 其实完全没必要复制字典,直接遍历原字典就能完成任务,省掉了多余的步骤。
下面是修正后的代码,两种写法供你选:
方法1:用Python3.6+的f-string(更直观易读)
employeeDatabase = { 'John': 54000.00, 'Judy': 71000.00, 'Albert': 38000.00, 'Alfonzo': 42000.00 } # 直接遍历字典的键值对,逐个处理员工 for name, current_salary in employeeDatabase.items(): raise_percent = 0.02 new_salary = current_salary * (1 + raise_percent) # 严格按照预期格式输出,确保薪资小数位数符合要求 print(f"{name}, your current salary is {current_salary:.2f}. You received a 2% raise. This makes your new salary {new_salary}")
方法2:用旧式字符串格式化(兼容更早Python版本)
employeeDatabase = { 'John': 54000.00, 'Judy': 71000.00, 'Albert': 38000.00, 'Alfonzo': 42000.00 } for name, current_salary in employeeDatabase.items(): raise_percent = 0.02 new_salary = current_salary * (1 + raise_percent) print("%s, your current salary is %.2f. You received a 2%% raise. This makes your new salary %f" % (name, current_salary, new_salary))
关键修正点说明:
- 用
employeeDatabase.items()同时获取员工姓名和当前薪资,遍历起来更直观,不用再通过键去字典里取值。 - 在每次循环里单独计算当前员工的新薪资,确保每个员工的结果都能被正确打印,不会被后面的员工覆盖。
- 用
:.2f格式化当前薪资,强制显示两位小数,和预期输出的格式完全匹配;新薪资直接用浮点数格式输出,和要求的结果一致。 - 补上了名字后面的逗号,让语句更通顺,完全贴合预期的输出格式。
运行这段代码后,就能得到你想要的个性化薪资通知啦!
内容的提问来源于stack exchange,提问作者OccamsBlazer
相关产品推荐
相关产品推荐

