Scenario: 我正在尝试为日期检查构建一个函数 . 该功能的输入为:年,月和假日列表(仅列出天数) . 该函数将检查input_date是否在假日列表中,如果是,它将为input_date总计一天 . 接下来它将检查哪个工作日是:如果是星期六(总和2),如果是星期日(总和1) .
Issue: 我的问题是,如果我只创建几个if子句来检查这些条件,周末检查后的新日期也可能在假日列表上,所以应该重复该过程,直到我找到一个未开启的工作日假期清单 .
Question: 有没有办法在循环中包含这些检查?
Code so far:
def datecheck (input_year, input_month, holiday_list):
datetime.inputdate = date(year, month, 1)
# this checks if inputdate is a holiday
if inputdate is in holiday_list:
inputdate == inputdate + datetime.timedelta(days=1)
# next part guarantees inputdate is a weekday
if inputdate.weekday() == 5:
inputdate == inputdate + datetime.timedelta(days=2)
else if inputdate.weekday() == 6:
inputdate == inputdate + datetime.timedelta(days=1)
#check again for holiday?
outputdate = inputdate
return outputdate
1 回答
while循环可以解决这个问题:
它将继续运行代码,直到表达式(如果inputdate在holiday_list中)计算为false .
将其余逻辑添加到循环中的示例:
我还清理了其他一些东西:
else if
应为elif
,is in
应为in
循环到位后不需要
outputdate
,因为一旦循环结束,inputdate
将具有正确的值datetime.inputdate
应该只是inputdate
我假设?datetime
是标准库中模块的名称,但它没有inputdate
属性第一个
if
语句以及之后的语句太过分了我也将正确的参数名称放入
date()
但是你知道,你需要像这个代码上方的from datetime import date
这样才能识别date
.