鱼C论坛

 找回密码
 立即注册
查看: 1259|回复: 18

[已解决]迭代器求解闰年

[复制链接]
发表于 2020-6-18 21:21:34 | 显示全部楼层
需要在return之前加上self.year+=1,然后return self.year-=1
代码:
  1. class LeapYear:
  2.     def __init__(self):
  3.         self.year=1
  4.     def __iter__(self):
  5.         return self
  6.     def __next__(self):
  7.         if self.year<=2020:
  8.             if ((self.year%4==0 and self.year%100!=0) or (self.year%400==0)):
  9.                 self.year+=1
  10.                 return self.year-1
  11.             self.year+=1
  12.         else:
  13.             raise StopIteration

  14. for i in LeapYear():
  15.     if i!=None:
  16.         print(i)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-18 21:24:56 | 显示全部楼层
xiaofeiyu 发表于 2020-6-18 21:21
需要在return之前加上self.year+=1,然后return self.year-=1
代码:

这个是输出所有闰年
两个self.year+=1是因为不管是平年还是闰年都要把年份加“1”,所以if里外都加了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-18 21:31:08 | 显示全部楼层
慕容逍客 发表于 2020-6-18 21:29
您好,程序会输出None的原因是什么呀?

不对呀,我已经判断了:
  1. if i!=None:
  2.         print(i)
复制代码
,只有i不是None的时候才输出i呀,而且我测试也没有问题。。。
您再看看代码吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-18 21:34:23 | 显示全部楼层
慕容逍客 发表于 2020-6-18 21:32
平年加1不应该放到else里面吗?如果您这样写,不管平年闰年都要加1,而且闰年重复加了一次。

else是当year大于2020的时候。。。
闰年没有重复加1,return是退出函数,到了这里程序就不会再执行下面的内容了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-18 21:42:01 | 显示全部楼层
慕容逍客 发表于 2020-6-18 21:41
emmmmmmmmm,我忘了return之后就会退出函数了,谢谢

不客气~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-18 21:46:51 | 显示全部楼层
慕容逍客 发表于 2020-6-18 21:42
两个都想设最佳怎么办,谢谢两位大佬

哈哈没关系的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-9 04:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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