如何为一周各天分配数字值,修复Python代码中周日对应数字7的返回错误
问题修复说明
根因分析
Python 中range(start, end)属于左闭右开区间,range(1,7)实际仅覆盖1到6的整数,不包含数值7。当输入7时会直接触发第一个判断逻辑返回Unknown,不会执行到后续day == 7的分支,这和判断顺序无关。
修复代码
将第一个判断的区间上限调整为8即可,修改后完整可运行代码如下:
def dayOfWeek(day): if day not in range(1, 8): return "Unknown" elif day == 1: return "Monday" elif day == 2: return "Tuesday" elif day == 3: return "Wednesday" elif day == 4: return "Thursday" elif day == 5: return "Friday" elif day == 6: return "Saturday" elif day == 7: return "Sunday" assert (dayOfWeek(0) == "Unknown") assert (dayOfWeek(7) == "Sunday") assert (dayOfWeek(1) == "Monday") assert (dayOfWeek(3) == "Wednesday")
可选优化方案
使用字典映射替代多分支判断,代码更简洁,后续维护调整也更方便:
def dayOfWeek(day): day_mapping = { 1: "Monday", 2: "Tuesday", 3: "Wednesday", 4: "Thursday", 5: "Friday", 6: "Saturday", 7: "Sunday" } return day_mapping.get(day, "Unknown")
内容的提问来源于stack exchange,提问作者user17144102
相关产品推荐
相关产品推荐

