Python入门问题:如何打印星期名称而非关联的工时整数值?
问题:如何在Python中输出包含星期名称的工时提示?
我是Python初学者,完成作业时需要获取用户输入的工作日工时(整数),生成汇总信息并根据工时判断打印某天工时过多或不足的提示。但当前代码里,把星期作为变量名存储工时数值,打印提示时只输出工时数字而非星期名称(比如输出“Too many hours worked on 9”而非“Too many hours worked on Monday”)。
我的代码如下:
week = input("Enter Current Working Week: ") id = input("Enter Employee ID: ") name = input("Enter Employee Name: ") monday = int(input("Enter hours worked for Monday: ")) tuesday = int(input("Enter hours worked for Tuesday: ")) wednesday = int(input("Enter hours worked for Wednesday: ")) thursday = int(input("Enter hours worked for Thursday: ")) friday = int(input("Enter hours worked for Friday: ")) print("Summary for Employee", id,) for i in monday, tuesday, wednesday, thursday, friday: if i > 8: print("Too many hours worked on", monday, tuesday, wednesday, thursday, friday) elif i < 4: print("Insufficient hours worked on", monday, tuesday, wednesday, thursday, friday))
请问如何改进代码以输出包含星期名称的正确提示?
解决方案
核心问题是单独存储星期工时的方式,无法把工时数值和对应的星期名称关联起来。解决思路是将星期名称与对应工时配对存储,比如用列表嵌套元组的方式,遍历的时候就能同时拿到星期名和工时。
改进后的代码如下:
week = input("Enter Current Working Week: ") emp_id = input("Enter Employee ID: ") # 避免用id做变量名,它是Python内置函数 name = input("Enter Employee Name: ") # 用列表存储星期名称和对应工时的配对 work_hours = [] days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"] for day in days: hours = int(input(f"Enter hours worked for {day}: ")) work_hours.append( (day, hours) ) print(f"Summary for Employee {emp_id}") total_hours = 0 for day, hours in work_hours: total_hours += hours if hours > 8: print(f"Too many hours worked on {day}") elif hours < 4: print(f"Insufficient hours worked on {day}") # 补充总工时汇总,完善输出内容 print(f"Total hours worked this week: {total_hours}")
关键改进说明:
- 用
days列表统一存储星期名称,通过循环收集输入,避免重复编写input语句,代码更简洁 - 用元组
(day, hours)绑定星期名和工时,遍历过程中可同时获取两者,解决名称与数值对应问题 - 将变量名
id改为emp_id,避免覆盖Python内置的id()函数 - 使用f-string格式化输出,提升代码可读性
- 修复原代码中循环print会输出所有工时、末尾多余右括号的语法错误
- 新增总工时计算,让汇总信息更完整
内容的提问来源于stack exchange,提问作者Sharon9091
相关产品推荐
相关产品推荐

