我在python中定义了一个输出数字的过程,并希望在两个不同的输入上添加调用过程的结果。但是,当我尝试对过程的结果执行算术时,我会看到错误消息
TypeError:不支持的操作数类型 - :'NoneType'和 '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问题的一部分(我对编码相对较新)。
答案 0 :(得分:1)
您需要显式返回您要使用的函数的结果。因此,您需要在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)
如果未显式返回值,则Python函数返回None
值。
话虽如此,您可以使用datetime
模块,特别是datetime.timedelta
对象,让您的生活更轻松。
答案 1 :(得分:0)
您忘记在year
程序中返回leapYear()
,默认情况下会返回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)