鱼C论坛

 找回密码
 立即注册
查看: 1300|回复: 4

[已解决]生成器

[复制链接]
发表于 2021-2-1 17:42:18 | 显示全部楼层 |阅读模式

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

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

x
  1. def gen(maxnum):
  2.         for i in range(maxnum):
  3.                 yield i

  4. g = gen(5)
  5. print( next(g) )
  6. print( next(g) )
  7. print( next(g) )
  8. print( next(g) )
  9. print( next(g) )
  10. print( next(g) )
复制代码


1.png

为啥到5就报错了?
最佳答案
2021-2-1 17:54:04
xy1770 发表于 2021-2-1 17:52
为啥5就会报错呢?




你自己输入的生成器里面就 5 个元素,0~4  超出就会抛出错误

相当于你把生成器都生成空了,而你还想叫这个生成器生成元素

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

使用道具 举报

发表于 2021-2-1 17:46:46 | 显示全部楼层
5没报错,6报错了,你要么改
g = gen(6)
要么删除一个print
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-1 17:52:01 | 显示全部楼层
逃兵 发表于 2021-2-1 17:46
5没报错,6报错了,你要么改
g = gen(6)
要么删除一个print

为啥5就会报错呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-1 17:52:14 | 显示全部楼层
你 i 的范围就是 0 - 4 ,前面 5次next 就全部迭代出来了,那第 6 次肯定报错啊,不然还能返回什么值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-1 17:54:04 | 显示全部楼层    本楼为最佳答案   
xy1770 发表于 2021-2-1 17:52
为啥5就会报错呢?




你自己输入的生成器里面就 5 个元素,0~4  超出就会抛出错误

相当于你把生成器都生成空了,而你还想叫这个生成器生成元素

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 08:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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