已知当月首日星期几,如何编写Python函数计算指定日期对应的星期?
问题解答
报错name 'date' is not defined的原因
你在全局作用域执行print(returnDay(date))时,全局没有定义过名为date的变量:函数returnDay内部定义的date属于局部作用域变量,仅在函数内部生效,外部无法直接访问。
另外你现有代码的逻辑和需求完全不匹配:需求明确已知当月第一天为星期五,不需要额外让用户输入首日;同时需求要求函数接收1-31的日期作为参数,你反而在函数内部读取用户输入的日期,直接覆盖了传入的参数,逻辑完全错位。
1-31范围校验的实现方法
在函数入口位置先判断传入的参数是否在1到31的区间内,不满足条件直接返回错误提示即可。
修正后可直接运行的完整代码
def returnDay(date): # 范围校验逻辑 if not 1 <= date <= 31: return "输入的不是当月有效日期" # 固定当月第一天为星期五 day_names = ['Sunday','Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] first_day_idx = day_names.index('Friday') # 计算目标日期的星期索引 target_day_idx = (first_day_idx + date - 1) % 7 return day_names[target_day_idx] # 测试用例 print(returnDay(1)) # 输出 Friday print(returnDay(10)) # 输出 Sunday print(returnDay(31)) # 输出 Sunday print(returnDay(0)) # 输出 输入的不是当月有效日期 print(returnDay(35)) # 输出 输入的不是当月有效日期
内容的提问来源于stack exchange,提问作者Shun
相关产品推荐
相关产品推荐

