从指定日期生成周一至周日星期名称,代码输出重复值求助
代码错误分析与修复
核心错误
你这段代码的问题很明确:
- 循环过程中始终打印初始的
given_day日期的星期名称,完全没有利用循环变量i去计算每天的偏移日期。不管i怎么变化,输出的都是同一个日期的结果,自然会得到7个重复的Monday。 - 定义的
dates变量从头到尾没用到,属于无效冗余代码。
修正方案
如果你的需求是从指定日期开始,输出接下来7天的星期名称(当指定日期为周一时,刚好覆盖周一到周日),可以用这段简化代码:
import datetime given_day = datetime.date(2022, 10, 31) for i in range(7): # 计算当前循环对应的日期:初始日期 + i天偏移 current_day = given_day + datetime.timedelta(days=i) print(current_day.strftime("%A"))
如果你的需求是不管指定日期是周几,都输出该日期所在周的周一到周日的星期名称(完全匹配你“周一至周日依次排列”的预期),可以保留你原来的range逻辑,补上日期计算:
import datetime given_day = datetime.date(2022, 10, 31) # 通过偏移量找到本周一,再遍历到周日 for i in range(-given_day.weekday(), 7 - given_day.weekday()): current_day = given_day + datetime.timedelta(days=i) print(current_day.strftime("%A"))
内容的提问来源于stack exchange,提问作者RovKat
相关产品推荐
相关产品推荐

