|
发表于 2020-6-19 11:36:14
|
显示全部楼层
本帖最后由 Twilight6 于 2020-6-19 11:37 编辑
因为你这的代码:
if 0<=self.a:
if (self.a%4==0 and self.a%100!=0) or (self.a%400==0):
return self.a
self.a-=1
迭代器条件成立后 return 执行就不会执行下面的代码,也就是红色代码不会运行了,导致你每次迭代都是执行上一次条件成立的值了~
这样即可
- class Run():
- def __init__(self):
- self.a=2020
- def __iter__(self):
- return self
- def __next__(self):
- if 0<=self.a:
- if (self.a%4==0 and self.a%100!=0) or (self.a%400==0):
- self.a -= 1
- return self.a+1
- self.a-=1
- else:
- raise StopIteration('太小了!')
- r=Run()
- for i in r:
- if i!=None and i>=2000:
- print(i)
复制代码
|
|