【问题标题】:How to change this code so it skips weekends but starts on Tuesday如何更改此代码使其跳过周末但从周二开始
【发布时间】:2020-09-27 02:41:23
【问题描述】:

在我的previous question 中,我询问了如何在 python 中执行以下操作(这是一个总结):

我正在用 Python 创建一个自动化程序,它将自动导航到我学校的网站,并使用 selenium 加入在线课程等。我已经完全完成了那部分,一切都很完美。现在,我正在尝试弄清楚如何安排这些操作。

我总共有 10 节课。我一天有6节课。我的学校周从星期一和星期五开始。在我的时间表中,总共有 6 天,这意味着每周,时间表中的一天轮换出,而我那周没有,另一天轮换进入。


所以,为了进一步解释我的意思,在第一周,周一到周五我会有第 1-5 天,但我不会有第 6 天。我会有第 6 天下周一。

我该如何安排这些天(第 1 天 - 第 6 天),以便它们在周一至周五运行,其中一天轮换,然后在下周返回(如上所述)?

这是我得到的答案,这正是我所需要的,但是,它只有在 first_day_of_school 是星期一时才有效。

from datetime import datetime

day_of_year = datetime.now().timetuple().tm_yday
first_day_of_school = datetime(2020, 9, 15).timetuple().tm_yday
day_of_school = day_of_year - first_day_of_school
week_of_school = day_of_school // 7
day_of_week = day_of_school % 7 # 0 means Monday
day_of_term = week_of_school * 5 + day_of_week
class_index = day_of_term % 6
print(class_index)

我想知道的是,如果first_day_of_school 是在星期二,我该如何正确修改它以使其以相同的方式工作?

我知道 // 7* 5 部分是在星期一跳过周末的方式,但我无法计算出让它在另一天工作的数学。在过去的 12 小时里,我尝试了很多不同的组合,但我无法解决它。我真的希望答案不只是盯着我看,因为这真的让我很沮丧。

我已经尝试前后解决它,但没有任何效果。 Python 的这一方面对我来说非常陌生。

【问题讨论】:

    标签: python python-3.x schedule


    【解决方案1】:

    我认为timedelta 就是您要找的东西

    import datetime
    
    day_of_year = datetime.datetime.now().timetuple().tm_yday
    
    skip_days = 2
    delta = datetime.timedelta(days=skip_days)
    first_day_of_school = datetime.datetime(2020, 9, 15) + delta
    
    first_day_of_school = first_day_of_school.timetuple().tm_yday
    day_of_school = day_of_year - first_day_of_school
    week_of_school, day_of_week = divmod(day_of_school, 7) 
    day_of_term = week_of_school * 5 + day_of_week
    class_index = day_of_term % 6
    print(class_index)
    

    【讨论】:

    • 谢谢,但skip_days = 2 不应该跳过周六周日吗?我将它从 1 更改为 2,它对我有用。
    • skip_days 更改为 2 现在适用于任何事情!!!!希望我能投票一百万次,非常感谢!!!!!!
    • 是的,skip_days 变量获取任意数字,但逻辑保持不变
    猜你喜欢
    • 2017-01-01
    • 2019-09-07
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多