我很难理解为什么我的函数不会存储我追加到列表中的I值?
代码是:
def numberofdays ():
sum = 0
leapyears = []
for i in range (1901, 2000):
if i%4 == 0:
leapyears.append (i)
sum = sum + 366
else:
sum = sum + 365
return sum + 366 #to account for year 2000.
return leapyears
当我致电print numberofdays()
时,它只返回36525
,sum
值。
答案 0 :(得分:3)
使用return
会立即退出某个功能。这意味着,return leapyears
行永远不会到达,因为它上面有return sum + 366
行。
如果要从numberofdays
返回两个值,可以将它们放在一个元组中并返回:
return sum + 366, leapyears
以下是演示:
>>> def func():
... return 1, 2
...
>>> func()
(1, 2)
>>> a, b = func() # You can use iterable unpacking to give the values names
>>> a
1
>>> b
2
>>>
另外,正如@JonClements在评论中所说,看起来你实际上打算做range (1901, 2001)
而不是range (1901, 2000)
。请记住,range
的第二个参数始终是独占的(不包括在内)。
最后,您可以使用sum = sum + 366
替换sum += 366
等代码。这确实是一个小问题,但后一种方法更加贪婪。 ;)
答案 1 :(得分:0)
return
语句结束了该功能 - 只要它到达return
,它就会全部结束。
要返回多个值,您可以return (sum+366,leapyears)