用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

我是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-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你是对的。它不会出现在其他声明中