Python二维数组员工信息管理代码输出异常求助
修正后的员工信息管理代码
原代码的核心问题
- 循环嵌套逻辑错误:统计部门人数的循环被嵌套在打印单个员工字段的循环内,导致每打印一个字段就重复统计并输出一次部门人数,造成输出混乱。
- 变量名拼写错误:
Departement多写了一个e(应为Department),统计Accounts的变量Account和Accounts混用,导致计数失效。 - 员工信息打印格式错误:每个字段打印后立即换行,导致一条员工信息被拆成三行显示。
- 未实现部门输入验证:没有限制部门只能是Accounts、Admin、Sales,不符合需求。
- 员工数量不符:原代码只处理4个员工,需求是10个。
修正后的完整代码
# 初始化员工信息存储的二维数组,10行3列(对应10名员工,3个字段) emp_details = [[0 for _ in range(3)] for _ in range(10)] # 初始化部门计数器 account_count = 0 admin_count = 0 sales_count = 0 # 输入10名员工信息 for i in range(10): emp_id = input(f"Enter the Employee ID for employee {i+1}: ") # 验证部门输入,确保只能是指定的三个选项 while True: department = input(f"Enter the Department (Accounts/Admin/Sales) for employee {i+1}: ").strip() if department in ["Accounts", "Admin", "Sales"]: break print("Invalid department! Please enter Accounts, Admin, or Sales.") salary = int(input(f"Enter the Salary for employee {i+1}: ")) # 将信息存入二维数组 emp_details[i][0] = emp_id emp_details[i][1] = department emp_details[i][2] = salary # 实时统计部门人数 if department == "Accounts": account_count += 1 elif department == "Admin": admin_count += 1 else: sales_count += 1 # 打印带列标题的所有员工信息 print("\nEmployee ID Department Salary") print("---------------------------------------") for emp in emp_details: # 格式化输出,确保各列对齐 print(f"{emp[0]:<15} {emp[1]:<15} {emp[2]:<10}") # 打印各部门员工数量 print("\n各部门员工数量统计:") print(f"Accounts: {account_count} Employees") print(f"Admin: {admin_count} Employees") print(f"Sales: {sales_count} Employees")
代码说明
- 二维数组初始化:创建10行3列的数组,对应10名员工的ID、部门、薪资三个字段。
- 输入验证:通过
while循环确保部门输入只能是指定的三个选项,避免无效数据。 - 实时统计部门人数:在输入每个员工信息时直接更新对应部门的计数器,无需后续再遍历数组统计,提升效率。
- 格式化输出:使用
f-string的对齐格式(<表示左对齐),让员工信息的列对齐,可读性更强。 - 清晰的流程拆分:将输入、统计、打印三个环节分开,逻辑更清晰,避免循环嵌套混乱。
内容的提问来源于stack exchange,提问作者AHM Mamun
相关产品推荐
相关产品推荐

