代码有病?把把脉
本帖最后由 小伤口 于 2020-12-22 10:30 编辑题目:1. 写一个迭代器,要求输出至今为止的所有闰年。如:B"
>>> leapYears = LeapYear()
>>> for i in leapYears:
if i >=2000:
print(i)
else:
break
2012
2008
2004
2000
甲鱼老师代码:
import datetime as dt
class LeapYear:
def __init__(self):
self.now = dt.date.today().year
def isLeapYear(self, year):
if (year%4 == 0 and year%100 != 0) or (year%400 == 0):
return True
else:
return False
def __iter__(self):
return self
def __next__(self):
while not self.isLeapYear(self.now):
self.now -= 1
temp = self.now
self.now -= 1
return temp
(不得不说甲鱼老师眼光长远,这样答案永远是对的{:10_256:} )
a=LeapYear()
for i in a:
if i >=2000:
print(i)
else:
break
2020
2016
2012
2008
2004
2000
俺的:class LeapYear:
def __init__(self,x=2020):
self.b=x
self.temp=0
def __iter__(self):
return self
def __next__(self):
if self.b%400==0 or (self.b%4==0 and self.b%100!=0):
self.temp=self.b
self.b-=1
else:
self.b-=1
return self.temp
可俺返回的是这玩意
>>> leapYears = LeapYear()
>>> for i in leapYears:
if i >=2000:
print(i)
else:
break
2020
2020
2020
2020
2016
2016
2016
2016
2012
2012
2012
2012
2008
2008
2008
2008
2004
2004
2004
2004
2000
2000
2000
2000
有哪位大佬能给我解解惑吗{:10_266:}
不胜感激
大概看了一下,你的问题在于第一次正确返回temp后,之后b-=1并未造成temp变化
所以在实例化的时候直到下一次temp改变(if再次判断通过,刚好隔了4次),之间i一直不变,一直可以输出 昨非 发表于 2020-12-11 19:25
大概看了一下,你的问题在于第一次正确返回temp后,之后b-=1并未造成temp变化
所以在实例化的时候直到下一 ...
nice
{:10_297:} 还有鱼币?刚刚发现{:10_256:} 昨非 发表于 2020-12-11 21:42
还有鱼币?刚刚发现
小机灵鬼{:10_334:} good lonhun 发表于 2020-12-18 15:20
good
还能找到这个帖子,我很欣赏你{:10_256:} 学习了,之前还没遇上过这个问题 小伤口 发表于 2020-12-18 15:21
还能找到这个帖子,我很欣赏你
哈哈哈哈学习
页:
[1]