我正在创建一个单链表,它返回给定范围内的奇数,而不是返回1、3、5等,而是返回1、None、3、None、5等。我想使它停止返回no和仅返回奇数。你知道吗
class Odds:
def __init__(self,end):
self.__start = 1
self.__end = end
def __iter__(self):
return OddsIterator(self.__end)
class OddsIterator:
def __init__(self,finish):
self.__current = 0
self.__step = 1
self.__end = finish
def __next__(self):
x = None
if self.__current > self.__end:
raise StopIteration
else:
self.__current += self.__step
if (self.__current - self.__step + 1) % 2 != 0:
x = self.__current - self.__step + 1
if x != None:
return x
返回
None
的原因是可以在没有return
语句的情况下到达__next__
的结尾,在这种情况下,任何Python函数都返回None
。这里的解决方案是在初始化时设置self.__step = 2
和self.__current = 1
。您还可以删除if x != None:
,因为它什么也不做。为了适应self.__current
的新定义,我在下面做了一些其他的小改动。当前,下面的代码将不包括最终值,如果您希望它将self.__current >= self.__end
更改为self.__current > self.__end
。你知道吗相关问题 更多 >
编程相关推荐