Python实现员工周工时统计排序功能相关问题咨询
员工每周工时统计Python实现方案
实现思路
- 用字典结构存储员工数据,键为员工姓名/编号,值可同时存储7天原始工时和总工时,方便后续扩展其他统计需求
- 输入环节添加合法性校验,确保输入为有效数字且工时在0-24的合理区间内
- 总工时直接对7天工时列表求和即可,排序调用Python内置
sorted方法指定排序规则实现降序排列
手动输入工时版本代码
def main(): emp_count = int(input("请输入员工总人数:")) # 存储所有员工工时数据 emp_work_info = {} for i in range(emp_count): emp_name = input(f"\n请输入第{i+1}名员工的姓名/编号:") daily_hours = [] # 循环录入7天工时 for day_idx in range(7): while True: try: hour = float(input(f"请输入{emp_name}第{day_idx+1}天的工时:")) if 0 <= hour <= 24: daily_hours.append(hour) break print("工时不合法,需在0-24区间内,请重新输入") except ValueError: print("输入不是有效数字,请重新输入") # 计算总工时并存入字典 total_hour = sum(daily_hours) emp_work_info[emp_name] = { "daily": daily_hours, "total": total_hour } # 按总工时降序排序 sorted_result = sorted(emp_work_info.items(), key=lambda x: x[1]["total"], reverse=True) # 输出结果 print("\n===== 员工总工时排行(降序)=====") for rank, (name, info) in enumerate(sorted_result, 1): print(f"第{rank}名:{name},总工时:{info['total']:.1f}小时") if __name__ == "__main__": main()
CSV文件导入版本(已有表格数据时使用)
如果工时已经存储在CSV表格中,不需要手动输入,可以使用下方简化版本,假设CSV结构为:第一列是员工姓名,第2-8列依次为7天工时:
import csv emp_total_list = [] with open("员工工时表.csv", "r", encoding="utf-8") as f: reader = csv.reader(f) # 如果CSV有表头,取消下一行注释跳过表头 # next(reader) for row in reader: name = row[0] daily_hour = list(map(float, row[1:8])) total = sum(daily_hour) emp_total_list.append((name, total)) # 降序排序后输出 for name, total in sorted(emp_total_list, key=lambda x:x[1], reverse=True): print(f"{name} 总工时:{total:.1f}")
内容的提问来源于stack exchange,提问作者Erez2Go Prod.
相关产品推荐
相关产品推荐

