如何为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
相关产品推荐
相关产品推荐

