小能豆

用python安排5天的6天时间表

py

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

我在考虑使用计划?它似乎适合简单的工作,但我不知道它是否适合这样的工作。

我总共有 10 节课。我一天有 6 节课。我的上课周从周一到周五。在我的课程表中,总共有6 天,这意味着每周,课程表中的一天会被轮换出去,而那一周我没有这天的课,另一天就会轮换进来。

因此,为了进一步解释我的意思,在第一周,我会有从周一到周五的 1-5 天,但没有第 6 天。我在下周一有第 6 天。

我将这些日子定义如下:

import configparser
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Firefox()


<defining what each class does here with selenium, etc.>


# Defining what classes I have in each day

def Day1():
    class()
    class()
    class()
    class()
    class()
    class()

def Day2():
    class()
    class()
    class()
    class()
    class()
    class()

def Day3():
    class()
    class()
    class()
    class()
    class()
    class()

def Day4():
    class()
    class()
    class()
    class()
    class()
    class()

def Day5():
    class()
    class()
    class()
    class()
    class()
    class()

def Day6():
    class()
    class()
    class()
    class()
    class()
    class()

class每天上不同课。有些课相同,有些课不同,但这对于这个问题来说并不重要。(我之所以把所有课都称为class这个问题,是因为这样比较简单)

我该如何安排这些日子(第 1 天 - 第 6 天),以便它们从周一到周五运行,一天轮换出去,然后在下周再回来(正如我上面所描述的)?

Pythonschedule模块似乎可以做到这一点,但是当我遇到这样的事情时,我甚至不知道从哪里开始。

我觉得这是一个非常简单的解决方案,但我似乎无法解决它。


阅读 8

收藏
2025-01-12

共1个答案

小能豆

您需要计算今天是学期的哪一天,然后将其除以 6。一段代码是一个很好的起点,用于获取当前年份的当前日期:

from datetime import datetime
day_of_year = datetime.now().timetuple().tm_yday

您还需要弄清楚一年中的哪一天是开学第一天。 称之为first_day_of_school。 然后,假设学校从星期一开始上课:

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, European style
day_of_term = week_of_school * 5 + day_of_week
class_index = day_of_term % 6

现在class_index是 [0, 5] 中的数字告诉你这一天要参加哪组课程。

您可能需要根据假期进行调整,例如,如果周五假期意味着周五的课程不会跳过,而是转移到周一。为此,您需要适当的工作日算术,这可以使用 NumPy 或其他库轻松高效地完成,或者您可以直接硬编码假期列表并强制执行,因为一个学期只有几个月。

2025-01-12