Python日历Le年功能代码不起作用

时间:2019-01-28 16:35:14

标签: python function calendar

所以我当前正在尝试创建一个函数,当您输入特定的年份和Calendar.isleap(year)时,它将处理该年份是真还是假的leap年。

我的问题是,我似乎无法找出一个函数,该函数将确定年份输入是否为True或False,然后将输出该年份以及字符串。我创建并尝试使用的示例如下:

import calendar

def leap_year():
    year = calendar.isleap(year)
    if calendar.isleap == True:
        print(year + 'is a leap year')
    else:
        print(year + 'is not a leap year')

year = 2016

leap_year()

在此方面的任何帮助将不胜感激。谢谢

4 个答案:

答案 0 :(得分:0)

如果年份是a年,则isleap()方法返回True,否则返回False

import calendar
print(calendar.isleap(2016))

答案 1 :(得分:0)

进行一些更改,您需要将year传递给函数,并在函数中使用“ year”作为变量,然后在打印时将year转换为字符串。

import calendar

def leap_year(year):
    if calendar.isleap(year) == True:
        print(str(year) + ' is a leap year')
    else:
        print(str(year) + ' is not a leap year')

leap_year(2016)

答案 2 :(得分:0)

代码可能是

def leap_year(check_year):
    if ((check_year%4==0)and not(check_year%100==0))or (check_year%400==0)  :
        print(str(year) + 'is a leap year')
    else:
        print(str(year) + 'is not a leap year')

year = 2016

leap_year(year)

答案 3 :(得分:0)

您的代码有几个问题。首先,您的函数创建一个名为year的新 local 变量,该变量遮盖了全局变量。由于名称查找的工作原理,您无法将全局变量year传递给calendar.isleap并将结果分配给局部变量。为本地变量使用其他名称。其次,您要查看calendar.isleap result 是否为True,而不是函数本身。在表达式中使用新的本地变量。

def leap_year():
    result = calendar.isleap(year)
    if result == True:
        print(str(year) + 'is a leap year')
    else:
        print(str(year) + 'is not a leap year')

就样式而言,请勿将布尔变量与布尔常量进行比较;只需直接测试变量:

if result:
    print(year + 'is a leap year')

这意味着您甚至不需要局部变量;只需直接在if语句中使用函数调用即可:

def leap_year():
    if calendar.isleap(year):
        print(year + 'is a leap year')
    else:
        print(year + 'is not a leap year')

最后,在此处使用全局变量是不好的风格。取而代之的是,将它们传递给leap_year作为参数的年份。

def leap_year(y):
    if calendar.isleap(y):
        print(str(y) + 'is a leap year')
    else:
        print(str(y) + 'is not a leap year')

year = 2016
leap_year(year)  # Or simply leap_year(2016)