Continue在使用datetime的Python中不起作用

Continue在使用datetime的Python中不起作用,python,datetime,jupyter-notebook,jupyter,Python,Datetime,Jupyter Notebook,Jupyter,我正试图写一个程序来打印两个给定日期之间的所有周二,不包括劳动节和感恩节假期。但是,当我使用“继续跳转”时,它会打破循环 import datetime def getDates(): StartDate = datetime.datetime(2020, 1, 1) EndDate = datetime.datetime(2020, 12, 31) LaborDay = datetime.datetime(2020, 9, 7) Thanksgivin

我正试图写一个程序来打印两个给定日期之间的所有周二,不包括劳动节和感恩节假期。但是,当我使用“继续跳转”时,它会打破循环

import datetime

def getDates():
     StartDate = datetime.datetime(2020, 1, 1)
     EndDate = datetime.datetime(2020, 12, 31)
     LaborDay = datetime.datetime(2020, 9, 7)
     Thanksgiving_Start = datetime.datetime(2020, 11, 23)
     Thanksgiving_End = datetime.datetime(2020, 11, 28)
     CurrentDate = StartDate
     days = int((EndDate - StartDate).days)
     print(StartDate.strftime("%Y-%m-%d"))
     for NextDate in range(days):
          NextDate = CurrentDate + datetime.timedelta(days=7)
          if NextDate == LaborDay:
               continue
          if Thanksgiving_Start <= NextDate <= Thanksgiving_End:
               continue
          if NextDate > EndDate:
               break
          print(NextDate.strftime("%Y-%m-%d"))
          CurrentDate = NextDate

 getDates()
导入日期时间
def getDates():
StartDate=datetime.datetime(2020,1,1)
EndDate=datetime.datetime(2020,12,31)
劳动日=日期时间。日期时间(2020,9,7)
感恩节开始=datetime.datetime(2020,11,23)
感恩节结束=datetime.datetime(2020,11,28)
当前日期=开始日期
天数=整数((结束日期-开始日期).days)
打印(StartDate.strftime(“%Y-%m-%d”))
对于范围内的下一个日期(天):
NextDate=CurrentDate+datetime.timedelta(天数=7)
如果NextDate==劳动日:
持续
如果您使用print(),您可以看到continue正在正常工作

def getDates():
     StartDate = datetime.datetime(2020, 1, 1)
     EndDate = datetime.datetime(2020, 12, 31)
     LaborDay = datetime.datetime(2020, 9, 7)
     Thanksgiving_Start = datetime.datetime(2020, 11, 23)
     Thanksgiving_End = datetime.datetime(2020, 11, 28)
     CurrentDate = StartDate
     days = int((EndDate - StartDate).days)
     print(StartDate.strftime("%Y-%m-%d"))
     for NextDate in range(days):
          NextDate = CurrentDate + datetime.timedelta(days=7)
          if NextDate == LaborDay:
              #labor day is in day 7 from septemeber, this day is not multiple of seven
              #starting from StartDate, so it is impossible that is going to evaluate
              # to true
              print("Continue is working first statement")
              continue
          if Thanksgiving_Start <= NextDate <= Thanksgiving_End:
              print("Continue is working second statment")
              continue
          if NextDate > EndDate:
               break
          print(NextDate.strftime("%Y-%m-%d"))
          CurrentDate = NextDate
         

getDates()
def getDates():
StartDate=datetime.datetime(2020,1,1)
EndDate=datetime.datetime(2020,12,31)
劳动日=日期时间。日期时间(2020,9,7)
感恩节开始=datetime.datetime(2020,11,23)
感恩节结束=datetime.datetime(2020,11,28)
当前日期=开始日期
天数=整数((结束日期-开始日期).days)
打印(StartDate.strftime(“%Y-%m-%d”))
对于范围内的下一个日期(天):
NextDate=CurrentDate+datetime.timedelta(天数=7)
如果NextDate==劳动日:
#劳动节是从9月开始的第7天,这一天不是7的倍数
#从StartDate开始,所以不可能对
#真实
打印(“继续是工作的第一条语句”)
持续

如果您开始问题是,一旦遇到第二种情况,您就不会设置
CurrentDate

事实上,您混合了两种不同的方法来更改下一个日期。它由循环在该范围内设置,但随后立即设置为与
CurrentDate
相关的值。挑一个,坚持下去;否则你肯定会陷入困惑


例如,您可以在这里更改
For
查看
while True
循环(或者更好:
while NextData在继续或中断之前是否尝试过打印?只是为了确保在continue语句中而不是在break语句中中断循环?也许if语句就是源代码-试试这个:
thankine\u Start@Yossi Levi:不,尾部比较确实有效。你可以在Pytho中使用
0
)n、 没问题。