Python之如何判断闰年

举报
梦笔生花 发表于 2022/10/10 21:14:24 2022/10/10
【摘要】 1.问题的描述闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的,补上时间差的年份为闰年,闰年共有366天​请输入一个年份,判断输出是否为闰年?2.解题思路闰年是历法中的名词,分为普通闰年和世纪闰年。1582年以来设置闰年的规则:普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。世纪闰年:公历年份...

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整除时,为闰年,否则不是闰年。

代码运行效果:


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。