Skip to content

About

Python 7 天 + 数据库 + 408 + 电子信息 学习知识库:105 道可自动判分习题 / 120 题题库 / 210 道 408 题 / 4 套模拟卷 / 桌面学习软件

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Python·408·电子信息 学习知识库

一个可判分、可验证的编程学习系统 —— 为"有 C/Java 基础、想在 7 天内拿下 Python + 数据库"的 Windows + VS Code 用户定制, 并附带 408(数据结构 / 组成原理 / 操作系统 / 计算机网络) 与 电子信息(电路 / 模电 / 数电 / 信号与系统) 两条长期轨道。

不只是资料合集:每道题都有自动判分器、每个数值答案都由程序独立复算、附带一个 macOS 风格的桌面学习软件。

Python SQLite Platform Exercises C code No deps Downloads License


这是什么

模块 内容 规模(实测)
7 天 Python 主线 逐日讲义 + 习题 + 参考解答 + 独立测试 105 道习题 / 554 个测试用例,100% 通过
数据库专题 SQLite 深入 + MySQL 对照 + SQL 速查 + 可跑练习库 7 张表 / 96 条选课 / 6 个索引
通用题库 8 大主题 × 4 难度档,含解析 120 题
408 四门 数据结构 / 组成原理 / 操作系统 / 计算机网络 210 题 + 7 个可编译 C 实现(498 项断言)
电子信息 电路模电 / 数电 / 信号与系统 / 实验工具链 含 Python DSP 实验(FIR 滤波器实测 −66.2 dB)
模拟卷 Python / SQL / 408 数据结构 / 408 混合 4 套(含评分标准)
桌面软件 macOS 风格 GUI:讲义 / 练习 / 进度 / 题库 / 工具 / 环境 打包为免安装 exe(零弹窗)

验证优先:所有计算题的答案(浮点位模式、Banker 安全序列、SCAN/LOOK 寻道、快排划分、散列 ASL、哈夫曼 WPL、Dijkstra 反例…) 都由 tools/_verify_*.py 用程序重新算过 —— 累计 1000+ 处。写作过程中因此抓出并修正了 40 多处真实错误。


快速开始

方式 A:免安装桌面软件(推荐)

# 从 Releases 下载 zip 解压后,双击:
LLMWikiStudy.exe
  • 无需安装 Python(exe 内置运行时)、无控制台黑窗、界面内零弹窗
  • 界面:Windows 原生标题栏(右上角 最小化/最大化/关闭)+ 自绘侧边栏与圆角卡片
  • 页面切换有平滑动画;标题栏 ◐ 一键深色/浅色(只影响本窗口,不改系统设置)
  • 自带判分:写代码 → Ctrl+Enter → 逐条报出失败原因

自己打包(改了内容之后):

powershell -ExecutionPolicy Bypass -File build_app.ps1 -Zip

脚本会自动做打包前自检 → 编译 → 打包后自检 → 界面渲染检查,任一步失败即中止。

方式 B:命令行 / VS Code

# 1) 判分器自检(应输出"自检通过")
python tools/grader.py --selfcheck

# 2) 看题库
python tools/grader.py --list

# 3) 做第 1 题,交互式判分
python tools/grader.py -i 1

# 4) 判某一天的题
python tools/grader.py --day 1

# 5) 全仓库总验收(语法 / 链接 / 契约 / 105 题全量判分 / GUI 冒烟 / 环境)
python tools/_acceptance.py

VS Code 里:Ctrl+Shift+P → Run Task → 选 3. 判分: 今天(第N天)的题(共 18 个预置任务)。


目录结构

.
├── README.md                 # 本文件(项目介绍)
├── APP_GUIDE.md              # 桌面软件使用说明 + 打包方法(含逐页操作指南)
├── DAY_PLAN.md               # 7 天逐日时间表(每小时做什么)
├── VSCODE_SETUP.md           # VS Code 配置、调试、任务、中文编码
├── PYTHON_VS_C_JAVA.md       # 给有 C/Java 基础的人:Python 差异速查
├── python-7day/              # 主线:day1_basics … day7_capstone
│   └── dayN_*/{README.md, lesson/, ex/, solutions/, tests/}
├── database/                 # SQLite 深入 + MySQL 对照 + 速查 + 练习库
├── practice-bank/            # 120 题题库 + 4 套模拟卷 + 刷题计划 + 进度表
├── 408/                      # 数据结构 / 组成原理 / 操作系统 / 网络(+ C 实现)
├── electronics/              # 电路模电 / 数电 / 信号与系统 / 实验工具链
├── roadmap/                  # 30 / 60 / 90 天路线与学习法
├── cheatsheets/              # Python / SQL / Git+VS Code 一页速查
├── app/                      # 桌面应用(tkinter,macOS 风格外壳为自绘)
├── tools/                    # 判分器、总验收、12 个数值验证脚本
└── build_app.spec / .ps1     # PyInstaller 打包配置与脚本

判分器的设计

习题是普通 .py 文件,顶部有元信息块,函数体是 TODO 占位:

# ---
# id: 1
# title: 温度换算 —— 算术运算与类型
# day: 1
# topic: 运算符与类型
# difficulty: 入门
# tests: 5
# time_estimate: 10min
# hint: Python 3 的 / 是真除法; 写成 9 // 5 会得到 1, 结果就错了
# ---
def exercise_convert_temperature(celsius):
    raise NotImplementedError("TODO: 实现它")

def test_01_freezing_point():
    assert exercise_convert_temperature(0) == (32.0, 273.15)

判分器(tools/grader.py)的特点:

  • 子进程隔离:你的代码死循环 / sys.exit() / 污染全局都不会影响判分器
  • 进程树超时终止:CREATE_NEW_PROCESS_GROUP + taskkill /F /T,5 秒兜底
  • 默认禁网:自动注入 sitecustomize.py 拦截 socket
  • 只允许标准库:避免"装个包才能做题"
  • --json / --out:供 GUI 与其它程序消费结构化结果

桌面软件(app/)

文件 作用
main.py 入口:无参数开界面;--verify / --grade / --grader / --shot 等走命令行
paths.py 路径定位(源码运行 / 打包运行都能找到知识库)+ 设置读写
kb.py 知识库数据层:扫描 105 道习题、120 道题库、文档;可单独自检
mdrender.py / mdview.py 轻量 Markdown 解析器 + 主题感知阅读器 + 代码编辑器
practice.py 练习执行器(子进程判分 + SQL 练习台 + C 编译运行)
progress.py 进度存储(原子写 JSON,损坏容错)+ Markdown 报告导出
theme.py / canvasui.py / anim.py 设计系统 / 自绘圆角控件 / 动画内核(Tween + Animator)
ui2.py macOS 风格界面(当前默认);ui.py 为回退版本

界面外观来源:控件主题用 ttkbootstrap(30 套主题,可换肤); 外壳(侧边栏、圆角卡片、动画)自绘,无第三方 GUI 框架依赖。参考了 Sun-Valley-ttk-theme 与 AnimatedWidgetsPack 的思路,但未直接引入(前者只换配色,后者不支持无边框窗口)。

主题只作用于本程序窗口:不写注册表、不改系统主题 / 壁纸 / DPI / 字体。


环境要求

项目 版本 必需
Windows 10 / 11(64 位) — 是
Python 3.11+(实测 3.13.14) 源码运行必需;用 exe 则不需要
SQLite 3.35+(Python 内置,实测 3.50.4) 是
gcc 16.1.0(WinLibs UCRT) 仅 408 的 C 代码需要
VS Code 1.138+ 推荐
numpy / scipy / matplotlib 可选 仅 Day7 扩展与 DSP 实验
winget install --id BrechtSanders.WinLibs.POSIX.UCRT -e   # gcc + gdb
pip install numpy scipy matplotlib                         # 可选

质量与验证

python tools/_acceptance.py        # 全仓库总验收

会检查:文档与 Python 文件数量、382 个 Python 文件全部可编译、109 个 Markdown 内部链接、 105 道习题契约完备、参考解答全量判分 554/554、仓库无运行产物残留、 应用与 GUI 冒烟(39 项,含最小化/还原/最大化/缩放/换页/换肤)、环境断言。

结果:0 失败 0 警告。


许可

MIT —— 覆盖本仓库的全部代码(app/、tools/、build_app.*、408/data-structure/code/ 等): 可自由使用、修改、分发、商用,保留版权声明即可。

各讲义与题目文本(python-7day/、database/、408/、electronics/、practice-bank/、roadmap/) 可自由用于个人学习与教学,转载时注明来源即可。

引用到的第三方项目(ttkbootstrap 等)遵循其各自许可(MIT)。

About

Python 7 天 + 数据库 + 408 + 电子信息 学习知识库:105 道可自动判分习题 / 120 题题库 / 210 道 408 题 / 4 套模拟卷 / 桌面学习软件

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages