确定Python中的闰年
这篇文章将讨论被称为闰年的术语。我们还将看到一个Python实现,以检查某一年是否是闰年。
闰年简介
地球围绕太阳完成一圈需要比365天多6个小时。
假设我们不在2月份多加一天(即29日)。在这种情况下,它最终会导致我们在不同的季节看到许多宗教和政治事件(尽管日期保持不变)。
它建议我们每4年增加一天,如6 x 4 = 24
。然而,这并不那么简单,因为多出来的6个小时并不精确。
地球在大约365天5小时48分46秒的时间内完成了它的旋转,这与前文中讨论的说法相差11分14秒。这种微妙的差异使我们进行更复杂的计算,以保持日期在同一季节。
因此,我们说,一个年份必须遵循以下条件才有资格成为闰年:
- 直线取消资格:如果所考虑的年份不能被4整除,那么它就没有资格成为闰年。例如,2077年不能被4整除(即
2077 % 4 != 0
),所以它不是一个闰年。 - 如果该年能被4均匀地除以,但不能被100均匀地除以,那么该年将是闰年。例如,2024年可以适当地被4整除,但不能被100整除(即
2024 % 4 == 0
和2024 % 100 != 0
),所以它符合成为闰年的条件。 - 如果这个数字能被4和100平均分割,那么我们将检查该年是否也能被400分割。如果是,该年将是闰年;否则,该年将不是闰年。
例如,4000年可以被4、100和400平均分割,所以它是一个闰年。在数学上,如果year % 4 == 0
,year % 100 == 0
和year % 400 == 0
,那么该年就是闰年。
下面一节提供了一个完整的Python实现,它将确定一个年份是否有资格成为闰年。在对闰年的概念有了基本的了解之后,让我们看看不同的实现来检查一个年份是否是闰年。
通过Python中一个简单的if-else
构造来确定闰年
下面的实现使用一个简单的if-else
结构来确定闰年。
- 对于一个给定的输入年份,我们首先检查是否满足第二个条件;如果满足,我们显示我们的肯定判断(即该年是闰年)。
- 如果输入的年份不满足第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()
方法接收一个整数年份值,如果参数是闰年或不是闰年,则返回true
或false
。因此,我们可以应用决策语句来显示我们的个性化信息。
让我们通过运行不同年份的程序来测试这段代码:
第一次运行:
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
构造)。我们让这对极客来探索和实现不同的变化。