如何用Python3实现函数:输入双日期提取年份并区分闰平年
单行输入双日期提取年份并统计闰平年的Python函数
以下是满足需求的完整实现,包含单行输入处理、年份提取、闰平年判断及结果返回的功能:
def classify_leap_years(): # 接收单行输入的两个日期,格式为 dd/mm/yyyy, dd/mm/yyyy input_str = input("请输入两个日期(格式:dd/mm/yyyy, dd/mm/yyyy):") # 分割并清理日期字符串 date1_str, date2_str = [d.strip() for d in input_str.split(',')] # 提取年份 start_year = int(date1_str.split('/')[-1]) end_year = int(date2_str.split('/')[-1]) # 确保起始年份不大于结束年份 if start_year > end_year: start_year, end_year = end_year, start_year leap_years = [] non_leap_years = [] # 遍历年份范围,判断闰平年 for year in range(start_year, end_year + 1): if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): leap_years.append(year) else: non_leap_years.append(year) # 返回结果列表 return leap_years, non_leap_years # 调用函数并打印结果 leaps, non_leaps = classify_leap_years() print(f"闰年:{', '.join(map(str, leaps))}") print(f"非闰年:{', '.join(map(str, non_leaps))}")
关键部分说明
- 单行输入处理:用
split(',')分割输入字符串为两个日期片段,strip()清理空格后,通过split('/')拆分日期取最后一段得到年份,转换为整数类型。 - 闰年判断优化:将原代码的多层嵌套条件简化为复合逻辑
(能被4整除但不能被100整除) 或者 (能被400整除),逻辑等价且可读性更强。 - 结果输出优化:用
', '.join(map(str, 列表))拼接元素,避免原代码循环打印导致的末尾多余逗号问题。 - 边界处理:增加年份交换逻辑,确保起始年份不大于结束年份,避免范围错误。
内容的提问来源于stack exchange,提问作者Shikhar Gupta
相关产品推荐
相关产品推荐

