确定Python中的闰年

这篇文章将讨论被称为闰年的术语。我们还将看到一个Python实现,以检查某一年是否是闰年。

闰年简介

地球围绕太阳完成一圈需要比365天多6个小时。

假设我们不在2月份多加一天(即29日)。在这种情况下,它最终会导致我们在不同的季节看到许多宗教和政治事件(尽管日期保持不变)。

它建议我们每4年增加一天,如6 x 4 = 24 。然而,这并不那么简单,因为多出来的6个小时并不精确。

地球在大约365天5小时48分46秒的时间内完成了它的旋转,这与前文中讨论的说法相差11分14秒。这种微妙的差异使我们进行更复杂的计算,以保持日期在同一季节。

因此,我们说,一个年份必须遵循以下条件才有资格成为闰年:

  1. 直线取消资格:如果所考虑的年份不能被4整除,那么它就没有资格成为闰年。例如,2077年不能被4整除(即2077 % 4 != 0 ),所以它不是一个闰年。
  2. 如果该年能被4均匀地除以,但不能被100均匀地除以,那么该年将是闰年。例如,2024年可以适当地被4整除,但不能被100整除(即2024 % 4 == 02024 % 100 != 0 ),所以它符合成为闰年的条件。
  3. 如果这个数字能被4和100平均分割,那么我们将检查该年是否也能被400分割。如果是,该年将是闰年;否则,该年将不是闰年。

例如,4000年可以被4、100和400平均分割,所以它是一个闰年。在数学上,如果year % 4 == 0year % 100 == 0year % 400 == 0 ,那么该年就是闰年。

下面一节提供了一个完整的Python实现,它将确定一个年份是否有资格成为闰年。在对闰年的概念有了基本的了解之后,让我们看看不同的实现来检查一个年份是否是闰年。

通过Python中一个简单的if-else 构造来确定闰年

下面的实现使用一个简单的if-else 结构来确定闰年。

  1. 对于一个给定的输入年份,我们首先检查是否满足第二个条件;如果满足,我们显示我们的肯定判断(即该年是闰年)。
  2. 如果输入的年份不满足第3行给出的复合条件,我们就检查输入的年份是否符合第三个条件,并相应地显示我们的判断。
  3. 现在,如果该年不符合上面提到的任何条件,我们的结论是该年不是闰年。

示例代码:

yearValue = int(input("Enter a year: "))
## here, yearValue means the year we want to check.
if yearValue % 4 ==0 and yearValue % 100!=0:           ## condition 2
    print(yearValue, "is a leap year")
elif yearValue % 4 ==0 and yearValue % 100==0:         ## condition 3
    if yearValue % 400==0:
        print(yearValue, "qualifies as a leap year")
    else:
        print(yearValue, "does not qualify as a leap year")
else:
    print(yearValue, "does not qualify as a leap year")         ## Condition 1

现在,我们将通过不同的输入值来评估我们的程序在三个条件中的每一个。

评估第一个条件的输出:

Enter a year: 2027
2027 does not qualify as a leap year

输出 评估第二个条件:

Enter a year: 2024
2024 is a leap year

输出 评估第三个条件:

Enter a year: 4000
4000 qualifies as a leap year

通过Python中的Calendar 模块确定闰年

Python的calendar 模块是执行涉及日期计算的可靠工具之一。它遵循欧洲惯例(即显示星期一为一周的第一天),并作为Python的相当于Unix的cal 程序。

它提供了几个实用程序来进行日期输入和操作(包括显示日历)。calendar 模块所提供的功能的详细列表可以在这里找到。

isleap() 方法是calendar 模块的功能之一。让我们看一下下面的例子,以了解calendar 模块和isleap() 方法的使用。

示例代码:

import calendar
yearValue = int(input("Enter a year: "))
if calendar.isleap(yearValue):
  print(yearValue,"qualifies as a leap year")
else:
  print(yearValue,"does not qualify as a leap year")

上述代码的第一行导入了calendar 模块。第二行从用户那里获得一个整数的年份输入,并将其分配给yearValue 变量。

calendar.isLeap() 方法接收一个整数年份值,如果参数是闰年或不是闰年,则返回truefalse 。因此,我们可以应用决策语句来显示我们的个性化信息。

让我们通过运行不同年份的程序来测试这段代码:

第一次运行:

Enter a year: 2027
2027 does not qualify as a leap year

第二次运行:

Enter a year: 2024
2024 qualifies as a leap year

第三次运行:

Enter a year: 4000
4000 qualifies as a leap year

通过条件运算符与Python中的Calendar 模块确定闰年

我们可以将条件运算符与calendar 模块结合起来实现同样的目的。条件运算符是一个三元条件结构,可以用来替代简单的if-else 结构。

示例代码:

import calendar
y = int(input("Enter a year: "))
# [statement_on_True] if [condition] else [statement_on_false]
print(y,"is a leap year") if (calendar.isleap(y)) else print(y,"is not a leap year")

上面的代码使用条件运算符来显示某年是否是闰年。条件运算符的语法在第4行的代码中得到了很好的注释。

几次运行的输出结果:

第一次运行:

Enter a year: 2027
2027 is not a leap year

第二次运行:

Enter a year: 2024
2024 is a leap year

第三次运行:

Enter a year: 4000
4000 is a leap year

如果我们想跳过使用calendar 模块,我们可以使用简单的复合条件与三元条件运算符结合起来。

此外,还有许多其他选择来实现所需的程序(例如,match-case 构造)。我们让这对极客来探索和实现不同的变化。