You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从指定日期生成周一至周日星期名称,代码输出重复值求助

代码错误分析与修复

核心错误

你这段代码的问题很明确:

  • 循环过程中始终打印初始的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 12:01:02