写点什么

Python 之如何判断闰年

作者:向阳逐梦
  • 2022 年 9 月 29 日
    四川
  • 本文字数:1158 字

    阅读完需:约 4 分钟

1.问题的描述

闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的,补上时间差的年份为闰年,闰年共有 366 天​

请输入一个年份,判断输出是否为闰年?

2.解题思路

闰年是历法中的名词,分为普通闰年和世纪闰年。1582 年以来设置闰年的规则:普通闰年:公历年份是 4 的倍数,且不是 100 的倍数的,为闰年(如 2004 年、2020 年等就是闰年)。世纪闰年:公历年份是整百数的,必须是 400 的倍数才是闰年(如 1900 年不是闰年,2000 年是闰年)。​

也就是说普通闰年:能被 4 整除,不能被 100 整除世纪闰年:能被 400 整除在 Python 中,判断一个数能否被另一个数整除,可用取模(%)的算法;判断年份是否为闰年可用 if 条件语句。

3.解题方法

方法一

year = int(input("输入一个年份: "))
if year % 4 == 0: if year % 100 == 0: if year % 400 == 0: print(f"{year} 年是世纪闰年") # 整百年能被400整除的是闰年 else: print(f"{year} 年不是闰年") else: print(f"{year} 年是普通闰年") # 非整百年能被4整除的为闰年else: print(f"{year} 年不是闰年")
复制代码

第 1 行: 用 input 函数请用户输入一个年份,int 函数将 input()的字符串转换成整型,并赋值给变量 year

第 3 行: 判断该年份能否被 4 整除,不能被 4 整除,转到第 11 行,输出该年不是闰年

第 4 行: 若能被 4 整除,则继续判断该年份能否被 100 整除,不能被 100 整除,转到第 9 行,输出该年是普通闰年

第 5-8 行: 若能被 100 整除,继续判断该年能否被 400 整除,若能被 400 整除,则为世纪闰年,不能被 400 整除,则不是闰年

在这里用到了 f-string 的方法格式化字符串,f 是“格式化(format)”的意思,如 f"Hello {somevar}",这种 f、引号和{}的组合相当于告诉 Python:“嘿!这是一个格式化字符串,把这些变量放到那几个位置”。​

在这里用到了 format 的方法来格式化字符串。

代码运行效果:

方法二

year = int(input("输入一个年份: "))
if year % 4 == 0 and year % 100 != 0: print(f"{year} 年是普通闰年")elif year % 400 == 0: print(f"{year} 年是世纪闰年")else: print(f"{year} 年不是闰年")
复制代码

第 1 行: 创建变量 year,用 input()输入年份为其赋值

第 3-8 行: 用 if...elif...else 语句进行判断。若该年份可以整除 4,但不能整除 100,则为普通闰年;若该年份可以整除 400,则为世纪闰年;否则,该年份不是闰年。

代码运行效果:

方法三

year = int(input("输入一个年份: "))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: print(f"{year} 年是闰年")else: print(f"{year} 年不是闰年")
复制代码

第 1 行: 创建变量 year,用 input()输入年份为其赋值

第 3-6 行: 将判断普通闰年和世纪闰年的方法合并,当该年份能被 4 整除且不能被 100 整除或能被 400 整除时,为闰年,否则不是闰年。

代码运行效果:


发布于: 刚刚阅读数: 4
用户头像

向阳逐梦

关注

人生享受编程,编程造就人生! 2022.06.01 加入

InfoQ签约作者、阿里云“乘风者计划”签约博主

评论

发布
暂无评论
Python之如何判断闰年_9月月更_向阳逐梦_InfoQ写作社区