鱼C论坛

 找回密码
 立即注册
查看: 903|回复: 2

各位大佬,还是有一部分48讲的内容不懂。。。请各位大佬指点下。。

[复制链接]
发表于 2019-5-5 10:02:21 | 显示全部楼层 |阅读模式

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

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

x
>>> class Fibs:
        def __init__(self,n=10):              或者在内部用参数控制
                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

       
>>> fibs = Fibs()
>>> fibs = Fibs(100)
>>> for each in fibs:
        print(each)

       
1
1
2
3
5
8
13
21
34
55
89
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-5-5 10:40:48 | 显示全部楼层
  1. class Fibs:
  2.     def __init__(self , n = 10):     # 设定数列元素值的上限为 n,缺省值为 10
  3.         self . a = 0
  4.         self . b = 1
  5.         self . n = n

  6.     def __iter__(self):
  7.         return self

  8.     def __next__(self):
  9.         self . a , self . b = self . b , self . a + self . b
  10.         if self . a > self . n :     # 如果数列下一个新元素的值超过设定的上限值
  11.             raise StopIteration      # 抛出 StopIteration 异常,结束迭代
  12.         return self . a              # 数列新元素的值在设定的上限值以内,正常返回给迭代器

  13. fibs = Fibs()                        # 以缺省的 10 为上限值,初始化 Fibs 类的新实例 fibs
  14. fibs = Fibs(100)                     # 以 100 为上限值,初始化 Fibs 类的新实例 fibs
  15. for each in fibs:                    # 利用迭代器产生数列
  16.     print(each)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-5 11:19:21 | 显示全部楼层

谢谢大佬!
然后我还是不明白为什么程式运行到末尾的时候  它不会将报错显示出来。。。
毕竟 raise是生成错误。。。
然而运行后不会显示出来,是raise本身的功能么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-15 15:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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