马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 wxq199459 于 2017-3-18 10:56 编辑 class Fibs:
def __init__(self,n=20):
self.a=0
self.b=1
self.n=n
def __iter__(self):
return self
def __next__(self):
self.a,self.b = self.b,self.a + self.b
if self.a > self.n:
raise StopIteration
return self.a
求问一下,这里raise了 stopiteraion 为什么运行 fibs = Fibs for each in fibs():print (each) 的时候没有在迭代最后报错呢?![](static/image/smiley/ali/ali23.gif)
还有一个问题是:import datetime as dt
class LY:
def __init__(self):
self.now = dt.date.today().year
def __iter__(self):
return self
def isLY(self,year):
if ((year%4==0 and year%100!=0) or (year%400 == 0)):
return 1
else:
return 0
def __next__(self):
while not self.isLY(self.now):
self.now-=1 #当前年份不是闰年时,now自动-1
temp = self.now #把now的值赋给temp
self.now-=1
return temp
最后这段定义__next__的地方没看懂,不是闰年时调用self.now-1,后面为什么还要-1?如果这样的话岂不是无论是不是闰年都return了吗?
有没有大神来解释一下这个__next__的返回值到底应该怎么设置,感觉小甲鱼老师在视频中并没有很清楚的说明出来
希望大佬能来说明一下,不胜感激!!!等级不够没法发悬赏 |