Python 程序判断闰年

使用 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)
Leap Year using If Statement

在此程序中,我们使用了逻辑 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.")
using Calendar module

使用 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)
Program to Check Leap Year using Elif Statement

在此 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)
Python Program to Check Leap Year using Nested If Statement

此程序允许用户输入任何值以检查它是否为闰年。首先,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")
Python Program to find Leap Year using Functions

使用 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