编写入门程序统计年/月/日各位数字之和等于7的日期总数
实现思路
你的初始思路完全适合初学者场景,不用纠结是不是“最优”。一年最多366天,哪怕全量遍历计算量也可以忽略不计,反而逻辑简单好写,不容易出现边界错误,比硬凑数字排列组合的逻辑靠谱太多。
具体实现可以按下面的步骤走:
- 先确定要统计的年份,优先处理2月天数的边界:可以直接预定义各月的天数列表,平年用
[31,28,31,30,31,30,31,31,30,31,30,31],闰年把第二个元素改成29即可 - 初始化计数器(或者存符合条件日期的空列表),初始值为0
- 遍历1~12月的所有月份:
- 遍历对应月份的1号到当月最后一天的所有日期
- 把年、月、日的所有数字拆分求和,注意如果是示例里的两位年规则,取年份后两位计算即可
- 如果求和结果等于7,计数器加1(或把当前日期存入结果列表)
- 遍历结束后直接输出计数器值或者结果列表即可
拆分数字求和可以用非常简单的写法,以Python为例,一行就能搞定:
# 四位年计算规则 total = sum(int(c) for c in str(year) + str(month) + str(day)) # 两位年计算规则(匹配你给的示例) total = sum(int(c) for c in str(year % 100) + str(month) + str(day))
如果想验证逻辑,可以拿你给的1/3/21测试,按两位年规则计算:str(21)+str(1)+str(3)得到字符串"2113",各位求和就是2+1+1+3=7,和示例结果一致。
内容的提问来源于stack exchange,提问作者aida_m
相关产品推荐
相关产品推荐

