使用 Python 过程的结果进行算术运算

Arithmetic with the Result of Python Procedures

我在 python 中定义了一个过程,它输出一个数字,并且想添加在两个不同输入上调用该过程的结果。但是,当我尝试对过程的结果执行算术运算时,出现了错误消息

TypeError: unsupported operand type(s) for -: 'NoneType' and 'NoneType'.

我尝试使用 int() 函数,但显然这不能对 'NoneType' 结果进行操作。我将如何添加这两个结果?

有问题的代码段是:

def leapYear(year):
    if year % 4 != 0:
        year = 365
    else:
        if year % 100 != 0:
            year = 366
        else:
            if year % 400 != 0:
                year = 365
            else:
                year = 366

def daysBetweenDates(year1, month1, day1, year2, month2, day2):
    dpY = leapYear(year2) - leapYear(year1)

这是我尝试解决 Udacity 问题的一部分(我对编码还比较陌生)。

您需要明确 return 您希望使用的函数的结果。因此,您需要将以下行添加到 leapYear 函数的末尾:

return year

单级缩进。

完整示例:

def leapYear(year):
    if year % 4 != 0:
        year = 365
    else:
        if year % 100 != 0:
            year = 366
        else:
            if year % 400 != 0:
                year = 365
            else:
                year = 366
    return year

def daysBetweenDates(year1, month1, day1, year2, month2, day2):
    return leapYear(year2) - leapYear(year1)

如果未明确 return 编辑值,则 Python 函数 return 是 None 值。

也就是说,您可以使用 datetime 模块,尤其是 datetime.timedelta 对象,让您的生活更轻松。

您在 leapYear() 过程中忘记了 return year,默认情况下它将 return None.
使用这个:

def leapYear(year):
    if year % 4 != 0:
        year = 365
    else:
        if year % 100 != 0:
            year = 366
        else:
            if year % 400 != 0:
                year = 365
            else:
               year = 366
    return year

def daysBetweenDates(year1, month1, day1, year2, month2, day2):
    dpY = leapYear(year2) - leapYear(year1)