sunyt 发表于 2021-12-22 20:11:54

python中while循环(__iter__,__next__)

本帖最后由 sunyt 于 2021-12-23 08:44 编辑


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


如上代码我不是很懂:
while not self.isLeapYear(self.now):
这句话如果结果是False,while循环不会结束吗?

jackz007 发表于 2021-12-22 20:11:55

本帖最后由 jackz007 于 2021-12-23 00:10 编辑

       你说的没错
not self.isLeapYear(self.now)
       只有在这个布尔表达式的值为 True 的时候才会循环
       就是说,只有在 self . now 不是闰年的时候才会循环。

sunyt 发表于 2021-12-22 20:37:22

.

sunyt 发表于 2021-12-23 08:56:33

jackz007 发表于 2021-12-23 00:07
你说的没错

       只有在这个布尔表达式的值为 True 的时候才会循环


我想了半天总算想明白了,谢谢。
页: [1]
查看完整版本: python中while循环(__iter__,__next__)