python大学课程表查询模块【开源】

效果:
请添加图片描述

请添加图片描述
目录结构:

- 根目录
    - curriculum_inquiry
        - __init__.py
        - data.py
    - main.py

__init__.py里写好了核心功能,定义了用于调用的query_today(查询今天课表)和query_tomorrow(查询明天课表)函数。
data.py里存储了课程时间表timetable,用whole_week作为一整周的变量,里面是阿拉伯数字7天,一天里有1-23-45-67-89-10,因为我们的课程是连着两节课一起上的,两节课组成的一个小单元,比如1-2节是一个学科,里面有5个属性,课程名称从第几周到第几周上课,是不分单双周上课还是单周上课还是双周上课教室门牌号教师姓名数组(因为一个科目有两个教师的情况)。
main.py里通过import curriculum_inquiry引入模块,用curriculum_inquiry.query_today()查询今天课表,用curriculum_inquiry.query_tomorrow()查询明天课表
假设在main.py里只有这些代码,这个例子展示了如何调用模块并输出到控制台。

import curriculum_inquiry
print(curriculum_inquiry.query_today())#查询今天课表
print(curriculum_inquiry.query_tomorrow())#查询明天课表

如果想实现和图片上一样的效果(Tg机器人),可以在main.py里这样写:
main.py

from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes
import curriculum_inquiry


async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    await update.message.reply_text('欢迎使用')


async def query_today(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    await update.message.reply_text(curriculum_inquiry.query_today())


async def query_tomorrow(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    await update.message.reply_text(curriculum_inquiry.query_tomorrow())


app = ApplicationBuilder().token("1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA").build()

app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("today", query_today))
app.add_handler(CommandHandler("tomorrow", query_tomorrow))

app.run_polling()

curriculum_inquiy/__init__.py

import datetime
import pytz
from . import data

tz = pytz.timezone('Asia/Shanghai')  # 指定时区为北京时间
start_date = datetime.date(2023, 2, 27)  # 开学时间
timetable = data.timetable
whole_week = data.whole_week


def query(time_object, which_day_str):
    # 计算几月几日
    date_str = time_object.strftime('%#m月%#d日')
    # 计算开学第几周
    week_num = time_object.weekday() + 1  # 第几周的阿拉伯数字
    weekday_str = '星期' + '一二三四五六日'[week_num - 1]
    now_date = time_object.date()
    weeks_since_start = (now_date - start_date).days // 7 + 1  # 开学第x周(阿拉伯数字)
    # 计算单双周
    odd_even_week = '-'
    odd_even_week_value = ''
    if weeks_since_start % 2 == 1:
        odd_even_week = '单'
        odd_even_week_value = 'odd'
    elif weeks_since_start % 2 == 0:
        odd_even_week = '双'
        odd_even_week_value = 'even'
    # 生成日期和周的一行信息
    date_week_info_str = f"{
     which_day_str}{
     date_str}{
     weekday_str},开学第{
     weeks_since_start}周,{
     odd_even_week}周。"
    # 生成课表内容
    # 课表生成字符串的字典 如果为False,就生成 '1-2 -' 这样的一行,如果value被替换掉了,则显示课程信息。
    period_gen_str_dict = {
   
        '1-2': False,
        '3-4': False,
        '5-6': False,
        '7-8': False,
    }
    # 这一周我的班级有课的课节(别的班级可能会有9-10,11-12的课节)
    class_period = ['1-2', '3-4', '5-6', '7-8', ]
    for each_class_period in class_period:  # 循环一天内的每一个课节
        if whole_week[week_num][each_class_period]['name'] != '':  # 如果课程名称不为空字符串(有内容)
            # 只有each_class_period的内容在改变
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值