使用 If 语句、嵌套 If 语句和 Elif 语句以及示例编写一个 Python 程序来判断闰年。在我们开始闰年程序之前,让我们先检查一下逻辑并了解其背后的定义。
闰年逻辑:普通年份有 365 天,而闰年有 366 天。逻辑上,所有能被四整除的年份都是闰年,但世纪年除外。世纪年是指以 00 结尾的年份,例如 1200、1300、2400、2500 等(显然它们能被 100 整除)。对于这些年份,我们的 Python 程序必须进一步计算以检查闰年逻辑。
- 如果世纪年能被 400 整除,则为闰年。
- 如果不能被 400 整除,则不是。
使用 If 语句的 Python 程序判断闰年
此程序允许用户输入任何数字,并使用 If 语句检查用户输入的数字是否为闰年。
yr = int(input("Please Enter the Number you wish: "))
if (( yr%400 == 0) or (( yr%4 == 0 ) and ( yr%100 != 0))):
print("%d is a Leap year" %yr)
else:
print("%d is Not" %yr)

在此程序中,我们使用了逻辑 AND 和逻辑 OR 运算符,因为我们需要在单个 If 语句中检查多个条件。让我们将条件分开以便更好地理解
1:( yr%400 == 0) 或
2:( yr%4 == 0 ) 并且
3:( yr%100 == 0))
在此 Python 闰年 程序 代码中,第一个条件 (yr%400 == 0) 将检查 (yr%400) 的余数是否正好等于 0。根据算法,任何能被 400 整除的数字都是闰年。
或者第二个 If 语句 包含两个带逻辑 AND 运算符的语句,因此它们都必须为 TRUE。
第一个条件 (yr%4 == 0) 将检查 (yr % 4) 的余数是否正好等于 0。如果条件为 False,它将退出,因为没有必要检查其他条件。它不是。
第二个条件将检查 (yr % 100) 的余数是否不等于 0。如果为 TRUE,则给定的数字不是世纪年。
根据算法,任何能被 4 整除但不能被 100 整除的数字都是闰年。
提示:请参阅 逻辑运算符 以了解 Python 逻辑与和逻辑或的功能。
使用三元运算符
此闰年代码示例与上面的相同,但它使用三元运算符在一行中显示代码。
y = int(input("Enter a Year = "))
print(y, "is a leap year" if ((y % 4 == 0 and y % 100 != 0) or y % 400 == 0) else "is not")
Enter a Year = 1300
1300 is not
使用 calendar 模块的 Python 闰年程序
此程序导入 calendar 模块并使用 isleap() 函数来确定给定年份是否为闰年。
import calendar
yr = int(input("Enter a Year = "))
if calendar.isleap(yr):
print(yr, "is a Leap Year.")
else:
print(yr, "is not.")

使用 Elif 语句的 Python 程序判断闰年
它允许用户输入任何值。然后,此程序代码将使用 Elif 语句 检查用户输入的值是否为闰年。
ya = int(input("Please Enter as you wish : "))
if (ya%400 == 0):
print("%d is a Leap year" %ya)
elif (ya%100 == 0):
print("%d is Not" %ya)
elif (ya%4 == 0):
print("%d is a Leap year" %ya)
else:
print("%d is Not" %ya)

在此 Python elif 程序中,首先,用户将输入任何数字以检查该数字是否为闰年。
- 首先,If 条件将检查 (ya % 400) 的余数是否正好等于 0。根据算法,任何能被 400 整除的数字都是闰年。如果此条件失败,它将转到下一个条件。
- 第二个 If 条件将检查 (ya % 100) 的余数是否正好等于 0。根据算法,任何不能被 400 整除但能被 100 整除的数字都不是世纪年。我们在第一个 If 语句中检查了 (ya % 400)。因为它失败了,所以它转到了第二个条件。如果第一个和第二个条件都失败,它将转到第三个条件。
- 闰年程序中的第三个条件将检查 num mod 4 是否等于 0。如果此条件为 True,则给定的数字是闰年,因为我们在前一个条件中已经检查了世纪年。如果所有语句都失败,它将转到最后的 Else 语句。
- 如果以上所有语句都失败,则它不是闰年
使用嵌套 If 语句的 Python 闰年程序
此闰年程序使用嵌套 if 语句来检查闰年。它允许用户输入任何数字,然后使用 嵌套 If 语句进行检查。
num = int(input("Please Enter the Number you wish: "))
if(num%4 == 0):
if(num%100 == 0):
if(num%400 == 0):
print("%d is a Leap Year" %num)
else:
print("%d is Not" %num)
else:
print("%d is a Leap Year" %num)
else:
print("%d is Not" %num)

此程序允许用户输入任何值以检查它是否为闰年。首先,If 条件将检查 (num%4) 的余数是否正好等于 0。
- 如果条件为 False,则给定的数字不是。
- 如果条件为 True,我们必须进一步检查世纪年。因此,它将转到 Nested If 条件。
闰年程序中的第二个 If 条件将检查 (num%100) 的余数是否正好等于 0。
- 如果此条件为 False,则它不是世纪年。因此,给定的数字是闰年。
- 如果表达式为 true,我们必须检查该数字是否能被 400 整除。因此,编译器将转到另一个 Nested If 条件。
此条件检查 (num%400) 的余数是否正好等于 0。
- 如果表达式为 False,则给定的数字不是。
- 如果表达式评估为 True,则给定的数字是闰年。
使用函数进行 Python 闰年程序检查
此函数接受任何整数,并使用 if else 语句检查条件并找出它是否为闰年。
def isleap(yr):
if yr % 400 == 0 or (yr % 4 == 0 and yr % 100 != 0):
return True
else:
return False
yr = int(input("Enter a year = "))
if isleap(yr):
print(yr, "is a leap year")
else:
print(yr, "is not")

使用 lambda 函数
此程序使用 lambda 函数 来检查它是否为闰年。
yr = int(input("Enter a year = "))
isleap = lambda yr: (yr % 4 == 0 and yr % 100 != 0) or yr % 400 == 0
if isleap(yr):
print(yr, "is a leap year")
else:
print(yr, "is not")
Enter a year = 2200
2200 is not
使用 & 运算符
此方法执行位操作。
yr = int(input("Enter a year = "))
isleap = (yr & 3 == 0) and ((yr % 25 != 0) or (yr & 15 == 0))
if isleap:
print(yr, "is a leap year")
else:
print(yr, "is not")
Enter a year = 1920
1920 is a leap year
使用列表推导式进行 Python 闰年程序检查
列表推导式 在一行中检查完整的条件。接下来,使用 if else 显示结果。
yr = int(input("Enter a year = "))
isleap = any([yr % 400 == 0, yr % 4 == 0 and yr % 100 != 0])
if isleap:
print(yr, "is a leap year")
else:
print(yr, "is not")
Enter a year = 2030
2030 is not
使用 datetime 模块的闰年程序
此程序使用 datetime 模块并检查二月是否有 29 天。
import datetime
yr = int(input("Enter a year = "))
try:
datetime.date(yr, 2, 29)
print(yr, "is a leap year")
except ValueError:
print(yr, "is not")
Enter a yr = 1947
1947 is not