初学python算法100例-案例30 计算闰年

Posted CSDN专家-小兔子编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学python算法100例-案例30 计算闰年相关的知识,希望对你有一定的参考价值。

题目:判断闰年

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

程序分析

1、满足闰年的条件有两种

2、一种是世纪闰年能被400整除

3、一种是普通闰年能被4整除同时不能被100整除

 

解法1 常规思路

通过多重if else进行条件判断

程序如下

year = int(input("输入一个年份: "))
if (year % 4) == 0:
   if (year % 100) == 0:
       if (year % 400) == 0:
           print("{0} 是闰年".format(year))   # 整百年能被400整除的是闰年
       else:
           print("{0} 不是闰年".format(year))
   else:
       print("{0} 是闰年".format(year))       # 非整百年能被4整除的为闰年
else:
   print("{0} 不是闰年".format(year))

运行结果

输入一个年份: 2000
2000 是闰年

输入一个年份: 2020
2020 是闰年

输入一个年份: 2100
2100 不是闰年

 

解法2 逻辑运算

通过多条件的逻辑运算在解法1的基础上进行优化

程序如下

year = int(input("请输入一个年份:"))
if (year % 4) == 0 and (year % 100) != 0 or (year % 400) == 0:
    print("{0}是闰年".format(year))
else:
    print("{0}不是闰年".format(year))

运行结果

请输入一个年份:2008
2008是闰年


请输入一个年份:2010
2010不是闰年


输入一个年份: 2000
2000 是闰年

 

程序扩展

判断一个区间内的年份有多少个闰年,并将闰年都列出来

核心程序就是判断闰年

程序如下:

def isLeapYear(year):
    if (year % 4) == 0 and (year % 100) != 0 or (year % 400) == 0:
        return True
    else:
        return False            
            
count = 0
leapYear=[]
for i in list(range(1900,2020,1)):
    if isLeapYear(i):
        count += 1
        leapYear.append(i)
print("闰年个数有 %d 个:"%count)
print("这%d个闰年分别是:"%count)
print(leapYear)

运行结果:

闰年个数有 29 个:
这29个闰年分别是:
[1904, 1908, 1912, 1916, 1920, 1924, 1928, 1932, 1936, 1940, 1944, 1948, 1952, 1956, 1960, 1964, 1968, 1972, 1976, 1980, 1984, 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016]

还有更多的方法,欢迎大家留言一起探讨学习

 

以上是关于初学python算法100例-案例30 计算闰年的主要内容,如果未能解决你的问题,请参考以下文章

初学python算法100例-案例19 球高空落地 弹跳N次后高度计算

初学python算法100例-案例17 输出并计算n个 逐项数字

初学python算法100例-案例23 输出菱形

初学python算法100例-案例22 居中输出三角形

初学python算法100例-案例32 有30个人(有男人,女人和小孩组成),花了50元吃饭(其中男人每位3元;女人每位2元;小孩1元),问男人,女人和小孩各多少?有多少种可能,分别是多少

初学python算法100例-案例28 逆序输出每位数字