Python'def'返回'None'?

Python'def'返回'None'?,python,function,Python,Function,我是python新手,我写了一些非常简单的代码只是为了练习。我试图编写一个函数,如果输入年份是闰年或不是闰年,则返回True或False 例如,我在2020年的产出是: True None 但它只是希望它是真的——发生了什么 代码如下: def is_leap(year): if year%4 !=0: print('False') elif year%100 == 0: print('False') elif year%100 == 0

我是python新手,我写了一些非常简单的代码只是为了练习。我试图编写一个函数,如果输入年份是闰年或不是闰年,则返回True或False

例如,我在2020年的产出是:

True
None
但它只是希望它是真的——发生了什么

代码如下:

def is_leap(year):
    if year%4 !=0:
        print('False')
    elif year%100 == 0:
        print('False')
    elif year%100 == 0 and year%400 == 0:
        print('True')
    else:
        print('True')
    return
year = int(input())
print(is_leap(year))
您正在合并打印和返回:


Python是缩进敏感的。您应该缩进功能块中的所有内容

此外,在is_leap函数中不返回任何内容

你可能想这样做

def is_leap(year):
    if year%4 !=0:
        return False
    elif year%100 == 0:
        return False
    elif year%100 == 0 and year%400 == 0:
        return True
    else:
        return True

退货和打印是两件不同的事情。您可能希望返回True或RERETURN False,而不是打印并删除最后一个返回语句PrintIs\u leapyear正在打印函数返回的值,因为您刚刚返回,它默认为Nonetry this``def isleapyear:如果年份%4==0或年份%400==0或年份%4==0和年份%100=0:return True else:return False``不使用字符串而使用布尔值不是更好吗?是的,但一次只做一个更改。我真的不知道如何响应。对不起:/为什么使用字符串更好?不管怎样,将类型作为其他类型使用字符串作为布尔值是一种不好的做法,一次只做一次更改并不能很好地将其保持为布尔值。请记住,我们来这里是为了教授最佳实践,稍高一点和稍高一点会产生很大的不同:当我在任何一年中运行这个程序时,我都不会得到任何结果,我不得不不同意。当我尝试使用此答案中的代码替换您的def is_leapyear时,我确实得到了输出。@HenriettaShalansky您必须将此函数与print语句配对:print'is Leap Year{0}。formatis_leap2020
def is_leap(year):
    if year%4 !=0:
        return False
    elif year%100 == 0:
        return False
    elif year%100 == 0 and year%400 == 0:
        return True
    else:
        return True