Python二级:统计员工工资表

文章讨论了如何使用Python处理员工工资表问题,给出了初始代码模板,分析了其存在的问题,并提供了改进的代码实现,强调了字典数据类型和避免使用数字作为键的重要性。
摘要由CSDN通过智能技术生成

一、题目来源

这是一个员工工资表问题,给出的参考答案存在一定的问题,我们分析一下。

简单应用题 2:员工工资表

类型:Python 组合数据类型‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬


参照代码模板完善代码,实现下述功能。‮‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

在代码模板里定义了一个字典,key是员工的姓名,value是由部门和工资构成的列表,用逗号隔开。示例如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

members = {'张三':['人力部',5500],
          '李四':['后勤部',4500],‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
...(略)‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

将姓名和工资显示在屏幕上,示例如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

张三的工资是:5500,部门是人力部‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
李四的工资是:4500,部门是后勤部‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫
...略)‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬
工资最高的部门是:开发部,该部门工资是:8500‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

示例1:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

输入:无
输出:"
张三的工资是:5500, 部门是人力部
李四的工资是:4500, 部门是后勤部
王三的工资是:6500, 部门是市场部
赵六的工资是:8500, 部门是开发部
工资最高的部门是:开发部,该部门工资是:8500
"

二、问题解法

1. 代码补全

题目要求需要把以下代码补充完整:

members = {'张三':['人力部',5500],
            '李四':['后勤部',4500],
            '王三':['市场部',6500],
            '赵六':['开发部',8500]
           }
sal_dep = {}
for key in members:
    print('{}的工资是:{}, 部门是{}'.format(_________))
    …

print('工资最高的部门是:{},该部门工资是:{}'.format(max_name,max_val))

2. 官方答案

# -*- coding:utf-8 -*-
'''
This is a python123.io file.
'''
members = {'张三':['人力部',5500],
            '李四':['后勤部',4500],
            '王三':['市场部',6500],
            '赵六':['开发部',8500]
           }
sal_dep = {}
for key in members:
    print('{}的工资是:{}, 部门是{}'.format(key, members[key][1], members[key][0]))
    sal_dep[members[key][1]] = members[key][0]
max_val = max(sal_dep)
max_name = sal_dep[max_val]
print('工资最高的部门是:{},该部门工资是:{}'.format(max_name,max_val))

3. 解题思路分析

1. 通过遍历字典来获取各部门的工资,通过生成一个以部门工资为键,以部门为键值的字典,再通过max直接得到工资最高的键,再获得其键值,就得到了这个工资对应的部门。

2. 该代码存在以下缺点:官方的解题思路比较简单,没有考虑到如果两个不同部门的工资一样,这样就不能把工资作为键了。所以把数字作为键名的风险是很大的,因为字典不允许有重复键名的现象,当两个部门工资一样时,就可能出现问题。

三、改进代码

改进的思路是把部门作为键名,部门工资作为键值,这样可以最大限度地减少键名重合。同时,在获取部门最高的工资时,我们利用lambda函数,按照字典键值为key获取最大值就可以了。修改后的代码如下:

members = {'张三':['人力部',5500],
            '李四':['后勤部',4500],
            '王三':['市场部',6500],
            '赵六':['开发部',8500]
           }
sal_dep = {}
for key in members:
    print('{}的工资是:{}, 部门是{}'.format(key, members[key][1], members[key][0]))
    sal_dep[members[key][0]] = members[key][1]
max_val = max(sal_dep,key = lambda x:sal_dep[x])
max_name = sal_dep[max_val]
print('工资最高的部门是:{},该部门工资是:{}'.format(max_name,max_val))

四、学后反思

  1. 字典的特性一定要掌握牢,就是键的不重复性,一般不要以数字作为键。
  2. 做Python二级题时要举一反三,思维不能固化,尽量采用自己可以理解的方法来解题。
  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PythonFun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值