Python程序需两次输入0退出循环及薪资统计功能实现求助
问题修复与代码优化方案
解决你遇到的两个核心问题
1. 单次输入0即可退出循环
原代码要求必须完成姓名和薪资两次输入后才判断退出条件,导致需要按两次0才能结束程序。修改后逻辑:输入姓名时输0,直接终止循环;若姓名正常输入,薪资输0也会直接退出,无需走完后续流程。
2. 实现平均薪资计算与差值筛选
单独提取薪资数据计算平均值,之后遍历所有员工,筛选出薪资与平均值相差5000元以内的条目(原代码中薪资输入单位是“百”,所以代码里把输入值乘以100转换为实际元,方便直接用5000作为差值阈值)。
优化后的完整代码
from statistics import mean def main(): employees = [] # 用列表存储员工姓名+薪资的元组,结构更清晰 count = 1 while True: # 先处理姓名输入,判断退出条件 name = input(f"Enter Employee {count} Name (press 0 to quit): ") if name.strip() == "0": break # 处理薪资输入,捕获无效数字的异常 try: salary_input = float(input(f"Enter Employee {count} Salary (in hundreds, press 0 to quit): ")) if salary_input == 0: break # 转换为实际薪资(元) salary = salary_input * 100 except ValueError: print("请输入有效的数字薪资!") continue employees.append( (name, salary) ) count += 1 # 处理没有输入任何数据的情况 if not employees: print("没有输入任何员工数据") return # 计算平均薪资 salaries = [emp[1] for emp in employees] avg_salary = mean(salaries) print(f"\n平均薪资: {avg_salary:.2f} 元") # 筛选并打印符合条件的员工 print("\n与平均薪资相差5000元以内的员工:") for name, salary in employees: if abs(salary - avg_salary) <= 5000: print(f"{name}: {salary:.2f} 元") if __name__ == "__main__": main()
额外的代码优化建议
- 变量命名:用
employees、name这类语义化名称代替原代码的L、e、s,提升代码可读性 - 异常处理:添加薪资输入的错误捕获,避免用户输入非数字时程序直接崩溃
- 结构简化:去掉不必要的全局变量,用
while True+break替代running标志,逻辑更简洁 - 边界处理:增加无数据输入的判断,防止计算平均值时报错
内容的提问来源于stack exchange,提问作者Shawngilbert107
相关产品推荐
相关产品推荐

