鱼C论坛

 找回密码
 立即注册
查看: 2213|回复: 8

[已解决]代码有病?把把脉

[复制链接]
发表于 2020-12-11 18:53:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小伤口 于 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
(不得不说甲鱼老师眼光长远,这样答案永远是对的
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
有哪位大佬能给我解解惑吗
不胜感激
最佳答案
2020-12-11 19:25:36
大概看了一下,你的问题在于第一次正确返回temp后,之后b-=1并未造成temp变化
所以在实例化的时候直到下一次temp改变(if再次判断通过,刚好隔了4次),之间i一直不变,一直可以输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-11 19:25:36 | 显示全部楼层    本楼为最佳答案   
大概看了一下,你的问题在于第一次正确返回temp后,之后b-=1并未造成temp变化
所以在实例化的时候直到下一次temp改变(if再次判断通过,刚好隔了4次),之间i一直不变,一直可以输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-11 19:31:50 | 显示全部楼层
昨非 发表于 2020-12-11 19:25
大概看了一下,你的问题在于第一次正确返回temp后,之后b-=1并未造成temp变化
所以在实例化的时候直到下一 ...

nice
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-11 21:42:19 | 显示全部楼层

回帖奖励 +2 鱼币

还有鱼币?刚刚发现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-12 10:17:06 | 显示全部楼层
昨非 发表于 2020-12-11 21:42
还有鱼币?刚刚发现

小机灵鬼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-18 15:20:59 | 显示全部楼层

回帖奖励 +2 鱼币

good
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-18 15:21:47 | 显示全部楼层

还能找到这个帖子,我很欣赏你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-18 17:09:06 | 显示全部楼层

回帖奖励 +2 鱼币

学习了,之前还没遇上过这个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-22 03:41:28 From FishC Mobile | 显示全部楼层
小伤口 发表于 2020-12-18 15:21
还能找到这个帖子,我很欣赏你

哈哈哈哈学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 00:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表