用Python管理日期
我是Python的高手,目前正在阅读一位同事提供的脚本。我对今天运行下面的脚本感到困惑用Python管理日期,python,python-3.x,date,datetime,Python,Python 3.x,Date,Datetime,我是Python的高手,目前正在阅读一位同事提供的脚本。我对今天运行下面的脚本感到困惑 import datetime today=datetime.date.today() - datetime.timedelta(days=4) print (today) if today.weekday() in [range(0,7)]: saturday=today-datetime.timedelta(today.weekday()-5) sunday=today-datetim
import datetime
today=datetime.date.today() - datetime.timedelta(days=4)
print (today)
if today.weekday() in [range(0,7)]:
saturday=today-datetime.timedelta(today.weekday()-5)
sunday=today-datetime.timedelta(today.weekday()-6)
else:
saturday=today-datetime.timedelta(today.weekday()+2)
sunday=today-datetime.timedelta(today.weekday()+1)
print (saturday)
print (sunday)
print (today.weekday())
结果如下:
2018-07-19
2018-07-14
2018-07-15
3
为什么脚本要执行else
-语句中的脚本?
today.weekday()
结果为3,如果执行if
-语句,则应执行该语句,因为3在手动计算的范围内,如果周六=2018-07-21
请告知我错误理解的地方。在这行中-
if today.weekday() in [range(0,7)]
range()
已经为您提供了一个列表,但在本例中,它是一个列表列表,您可以得到如下内容-
[[0, 1, 2, 3, 4, 5, 6]]
[[0, 1, 2, 3, 4, 5, 6], 3] #then it would have been true
如您所见,3不在[[0,1,2,3,4,5,6]]
但如果是这样的话-
[[0, 1, 2, 3, 4, 5, 6]]
[[0, 1, 2, 3, 4, 5, 6], 3] #then it would have been true
拆下支架并使其保持此状态-
if today.weekday() in range(0,7)
它应该在这方面起作用-
if today.weekday() in [range(0,7)]
range()
已经为您提供了一个列表,但在本例中,它是一个列表列表,您可以得到如下内容-
[[0, 1, 2, 3, 4, 5, 6]]
[[0, 1, 2, 3, 4, 5, 6], 3] #then it would have been true
如您所见,3不在[[0,1,2,3,4,5,6]]
但如果是这样的话-
[[0, 1, 2, 3, 4, 5, 6]]
[[0, 1, 2, 3, 4, 5, 6], 3] #then it would have been true
拆下支架并使其保持此状态-
if today.weekday() in range(0,7)
而且它应该会起作用改变
if today.weekday() in [range(0,7)]:
致:
它会正常工作。改变
if today.weekday() in [range(0,7)]:
致:
使用@Piotrek或@ThatBird的更正,请注意
今天。范围(0,7)内的weekday()将始终计算为True
,因此使用@Piotrek或@ThatBird的更正无法访问else语句,请注意今天。范围(0,7)内的weekday()
将始终计算为True
,因此无法访问else语句HI!谢谢你向我解释这件事。如果我继续你的指令,上面的脚本什么时候执行else语句?不是每天都分配一个从0到7的整数吗?如果是这样,它将始终执行If语句,对吗?@Janine你是对的。它不会进入其他状态嗨!谢谢你向我解释这件事。如果我继续你的指令,上面的脚本什么时候执行else语句?不是每天都分配一个从0到7的整数吗?如果是这样,它将始终执行If语句,对吗?@Janine你是对的。它不会出现在其他声明中