鱼C论坛

 找回密码
 立即注册
查看: 641|回复: 5

[已解决]048课时动动手第二题

[复制链接]
发表于 2018-8-16 17:49:27 | 显示全部楼层 |阅读模式

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

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

x
class LeapYears:
    def __init__(self):
        self.years = 0

    def __iter__(self):
        return self

    def __next__(self):
        self.years += 1
        if ((self.years % 4 == 0 and self.years % 100 == 0) or (self.years % 400 == 0)):
            return self.years
leap = LeapYears()
for i in leap:
    if i >= 2000:
        print(i)
    else:
        break
##这段代码有啥问题呢大佬们为啥报错呢 有啥逻辑上错误吗
#TypeError: '>=' not supported between instances of 'NoneType' and 'int'


最佳答案
2018-8-17 02:35:13
本帖最后由 jthylkl 于 2018-8-17 02:38 编辑

i 进入for循环,触发__next__方法,leap.years由0变为1,不符合条件,没有返回值,此时i仍然为None当然不能和int比较大小啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-16 18:01:36 | 显示全部楼层
for 就算条件不成立它也会有返回值,就是None,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-16 18:19:42 | 显示全部楼层
for 是没有返回值的,也不会返回 None
你的问题是让系统去比较一个【整型】与【无类型】

LeapYears 竟然用类去定义,杀鸡用牛刀,结果出错了。你设计的类并没有迭代功能,而是像一般的函数把运算结果返回而已。可尝试换一下操作,leapyears = [] ,leapyears.append[]。这样就是一个可以迭代的容器了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-17 01:48:10 From FishC Mobile | 显示全部楼层
那小甲鱼课时里讲的斐波拉契数列里迭代时不也是跟我一样吗,咋用斐波拉契数列时可以,我照葫芦画瓢的咋就不行啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-17 02:35:13 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
本帖最后由 jthylkl 于 2018-8-17 02:38 编辑

i 进入for循环,触发__next__方法,leap.years由0变为1,不符合条件,没有返回值,此时i仍然为None当然不能和int比较大小啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-17 05:35:28 | 显示全部楼层
claws0n 发表于 2018-8-16 18:19
for 是没有返回值的,也不会返回 None
你的问题是让系统去比较一个【整型】与【无类型】

class Fibs:
    def __init__(self):
        self.a = 0
        self.b = 1
    def __iter__(self):
        return self
    def __next__(self):
        self.a,self.b = self.b,self.a+self.b
        return self.a
fibs = Fibs()
for i in fibs:
    if i < 20:
        print(i)
    else:
        break
那这个咋能用呀 我不就换了个外壳吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 12:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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