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

如何为Python年度日期打印程序添加计数器实现隔7天输出?

当然可以实现每7天打印一次的需求!

首先先帮你修正一下原始代码里的小bug:

  • 2月如果按闰年29天算,你设置的daymax=29会导致range(1,29)只生成1-28号,漏掉了29号,应该改成daymax=30;
  • 4、6、9、11月的daymax=31是对的,因为range(1,31)会生成1-30号,刚好符合这些月份的天数。

接下来咱们添加计数器来实现每7天打印一次的功能,思路很简单:

  • 初始化一个计数器,从0开始
  • 每遍历一天,计数器加1
  • 根据你的需求设置判断条件,比如每7天的最后一天打印,或者每周第一天打印

这里给出两种常见的实现方式:

方式一:每7天打印一次(第7、14、21...天)

这种是每过7天打印一次,也就是每周的最后一天输出日期:

def main():
    day_counter = 0  # 初始化日期计数器
    for month in range(1, 13):
        # 修正后的月份天数判断
        if month == 2:
            daymax = 30  # 闰年29天,range(1,30)生成1-29号
        elif month in [4, 6, 9, 11]:
            daymax = 31  # 30天的月份,range(1,31)生成1-30号
        else:
            daymax = 32  # 31天的月份,range(1,32)生成1-31号
        for day in range(1, daymax):
            day_counter += 1
            # 计数器是7的倍数时打印日期
            if day_counter % 7 == 0:
                print(f"{day}.{month}.")

main()

方式二:每隔6天打印一次(第1、8、15...天)

如果你想从全年第一天开始,每间隔6天打印一次(也就是每周第一天输出),只需要把判断条件改成day_counter % 7 == 1:

def main():
    day_counter = 0  # 初始化日期计数器
    for month in range(1, 13):
        if month == 2:
            daymax = 30
        elif month in [4, 6, 9, 11]:
            daymax = 31
        else:
            daymax = 32
        for day in range(1, daymax):
            day_counter += 1
            # 第1、8、15...天打印日期
            if day_counter % 7 == 1:
                print(f"{day}.{month}.")

main()

另外,如果你需要更准确的日期处理(比如自动判断闰年、完全避免无效日期),可以用Python内置的datetime模块,这种方式更可靠,不用手动判断每个月的天数:

from datetime import date, timedelta

def main():
    start_date = date(2024, 1, 1)  # 可以替换成你需要的年份
    end_date = date(2024, 12, 31)
    day_counter = 0
    current_date = start_date
    while current_date <= end_date:
        day_counter += 1
        if day_counter % 7 == 0:  # 同样可以根据需求调整判断条件
            print(current_date.strftime("%d.%m."))
        current_date += timedelta(days=1)

main()

内容的提问来源于stack exchange,提问作者Hello

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:17:31