如何用Python实现2020年每个日期的数字求和并输出?
解决方案
你可以通过字符串处理的方式轻松提取日期中的数字并求和,完全不需要纠结月份长度的差异。具体步骤如下:
- 将日期格式化为
yyyy-mm-dd字符串后,移除分隔符- - 遍历字符串中的每个字符,转换为整数后累加求和
修改后的完整代码如下:
from datetime import date, timedelta def date_range(start, end): # 修复原逻辑遗漏最后一天的问题:range范围需要+1才能包含end日期 for i in range(int((end - start).days) + 1): yield start + timedelta(i) start = date(2020, 1, 1) end = date(2020, 12, 31) for each_date in date_range(start, end): date_str = each_date.strftime("%Y-%m-%d") # 核心求和逻辑:去掉分隔符后逐个字符转整数求和 digit_sum = sum(int(char) for char in date_str.replace('-', '')) print(f"{date_str} 的数字和为 {digit_sum}")
关键细节说明
- 修复日期范围遗漏:原代码的
range(int((end - start).days))会漏掉2020-12-31,因为end - start的天数是364,range(364)仅生成0到363的索引,加1后才能覆盖全年所有日期。 - 简化数字提取:通过
replace('-', '')把日期字符串转为无分隔符的纯数字串(比如2020-01-01变成20200101),再遍历每个字符转整数求和,完全避开了月份天数的复杂判断。
内容的提问来源于stack exchange,提问作者Xerxes Google
相关产品推荐
相关产品推荐

