在Python中计算月天数

在Python中计算月天数,python,python-2.7,Python,Python 2.7,有人能帮我写python代码吗 我正在学习python,我有一个错误我无法修复,我不明白是什么错了 有谁能帮我修一下,告诉我为什么它错了 def leap_year(year): if year % 400 == 0: return True elif year % 100 == 0: return False elif year % 4 == 0: return True else: return

有人能帮我写python代码吗

我正在学习python,我有一个错误我无法修复,我不明白是什么错了

有谁能帮我修一下,告诉我为什么它错了

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

def days_in_month(month):
    if month == 1 or month == 3 or month == 5 or month == 7 \
    or month == 8 or month == 10 or month == 12:
        return month == 31
    elif month == 2:
        if leap_year(year):
            return 29
        else:
            return 28
    else:
        return 30

您的代码中有几个错误:

月内天数是月和年的函数。相应地定义它。 返回月份==31没有意义。您的输出应该是天数,而不是布尔值。 此外,我还简化了代码,减少了or/if/elif/else语句的数量

def leap_year(year):
    if year % 400 == 0:
        return True
    if year % 100 == 0:
        return False
    if year % 4 == 0:
        return True
    return False

def days_in_month(month, year):
    if month in {1, 3, 5, 7, 8, 10, 12}:
        return 31
    if month == 2:
        if leap_year(year):
            return 29
        return 28
    return 30

print(days_in_month(2, 2016))  # 29

你的问题是什么?请提供一些样本输入和样本输出。描述你的期望和实际情况。闰年并不是那么简单,OP的想法是正确的。@AlexHall,我只是复制了OP的预期逻辑,其中包含错误。我不是在声明算法的正确性。不,你改变了逻辑。例如,2100年不是闰年。OP的函数得到了正确的结果,而你的函数没有。严格来说,你并不真正需要elif just if or else子句,因为每个子句都返回。它不起作用。我的错误是,如果leap_yearyear:NameError:global name“year”没有定义,我不知道为什么?