一个基于 Cloudflare Workers 部署的轻量级 Web 应用,用于在线展示 Python 编程作业的题库与参考答案.
本项目是一个 Python 编程作业题库的在线展示平台,共收录 44 道 Python 练习题(编号 1-44,其中第 28 题我看不懂题目),涵盖基础语法,经典算法,OS 模块文件操作,tkinter GUI 以及 sqlite3 数据库等知识点.
网站采用浏览器端 Python 运行环境(Pyodide),用户无需安装任何软件,即可在线查看题目,编辑代码并直接运行查看输出结果.部分涉及 tkinter 图形界面的题目在浏览器中无法完整运行,会提示用户本地执行.
项目 GitHub 仓库: https://github.com/wm2242/python_tk_work
- 题目列表浏览: 左侧边栏列出全部题目(1-44,缺第 28 题),点击即可切换
- 题目详情展示: 显示题目描述与参考代码(代码可在线编辑)
- 在线代码运行: 基于 Pyodide 在浏览器中直接执行 Python 代码,无需后端服务器
- 标准输入支持: 支持通过界面为 input() 提供输入数据
- 虚拟文件系统: 可浏览所有题目的 Python 源文件及数据文件的目录结构(橙色为数据文件,绿色为 Python 源文件)
- 文件上传: 支持上传 Python 文件以补充项目运行所需的文件(注意: 此功能仅用于补充项目运行文件,不能用于扩展题库)
| 组件 | 技术/服务 |
|---|---|
| 前端 | HTML + CSS + JavaScript |
| Python 运行时 | Pyodide (WebAssembly 版 CPython) |
| 域名服务 | DNSHE 免费域名管理平台 |
| 服务器部署 | Cloudflare Workers |
| CDN 加速与安全 | Cloudflare |
本项目的域名通过 DNSHE 免费域名管理平台申请并管理. DNSHE 提供了免费的二级域名及 DNS 解析服务,用户可在该平台完成域名的注册与解析配置.
项目实际运行于 Cloudflare Workers 无服务器平台上. Cloudflare Workers 提供了轻量级的 JavaScript/WebAssembly 运行环境,使本项目可以低成本,高可用地部署在全球边缘节点上.
部署流程简述:
- 在 Cloudflare Workers 中创建新的 Worker
- 将前端静态资源(HTML, CSS, JavaScript, Pyodide 依赖等)部署至 Worker
- 将域名通过 DNSHE 解析至 Cloudflare Workers 的默认域名或自定义域名
pytk/ # 项目根目录
├── index.html # 主页面(包含完整前端逻辑)
├── pyodide/ # Pyodide Python 运行时(约12MB)
│ └── pyodide.js # Pyodide 核心库
├── 1-10/ # 第1-10题: 基础编程题
│ ├── 1.py
│ ├── 2.py
│ ├── 3.py
│ ├── 4.py
│ ├── 5.py
│ ├── 6.py
│ ├── 7.py
│ ├── 8.py
│ ├── 9.py
│ └── 10.py
├── 11-22/ # 第11-22题: 经典算法题
│ ├── 11.py
│ ├── 12.py
│ ├── 13.py
│ ├── 14.py
│ ├── 15.py
│ ├── 16.py
│ ├── 17.py
│ ├── 18.py
│ ├── 19.py
│ ├── 20.py
│ ├── 21.py
│ └── 22.py
├── 23-33/ # 第23-33题: OS模块与文件操作
│ ├── 23.py
│ ├── 24.py
│ ├── 25.py
│ ├── 26.py
│ ├── 27.py
│ ├── 29.py # 第28题缺失,跳至29
│ ├── 30.py
│ ├── 31.py
│ ├── 32.py
│ ├── 33.py
│ └── students.txt # 数据文件(第23题)
├── 34-44/ # 第34-44题: 综合题(含tkinter和sqlite3)
│ ├── 34.py
│ ├── 35.py
│ ├── 36.py
│ ├── 37.py
│ ├── 38.py
│ ├── 39.py
│ ├── 40/ # 第40题: 文件合并(含数据文件)
│ │ ├── 40.py
│ │ ├── A.txt # 数据文件
│ │ └── B.txt # 数据文件
│ ├── 41.py # tkinter GUI (需本地运行)
│ ├── 42.py # tkinter GUI (需本地运行)
│ ├── 43.py # tkinter GUI (需本地运行)
│ └── 44/ # 第44题: 数据库CRUD操作(tkinter GUI)
│ ├── createdata.py # 辅助模块
│ └── dml.py # tkinter GUI (需本地运行)
说明:
- 第 28 题我有意未编写,因为我看不懂题目要求,因此题库实际为 44 题(1-27, 29-44).
- 40/ 和 44/ 为包含多个文件的子目录,浏览器虚拟文件系统会显示其完整结构.
- 带有 tkinter GUI 标注的题目在浏览器中无法正常显示图形界面,会提示用户下载后本地运行.
- 访问网站,左侧边栏列出全部题目
- 点击任意题目,右侧区域显示题目描述与参考代码
- 点击"运行"按钮,代码将在浏览器中执行并显示输出结果
- 若程序需要 input() 输入,可在"标准输入"区域预先录入数据
- 点击"查看所有文件/文件夹"可浏览虚拟文件系统
- 如需上传补充文件(例如额外的数据文件或辅助模块),可使用页面上传功能
- 使用 tkinter 模块的 Python 文件会显示警告,且不提供在线运行功能,建议下载后本地执行.
- 包含多个 Python 文件的题目(如第 40, 44 题)会在虚拟文件系统中展示所有相关文件.
- 文件上传功能仅用于补充项目运行文件(如数据文件,辅助模块),不能用于扩展题库.
- 所有代码在浏览器中执行,不会上传至任何服务器,请放心使用.
感谢大好人 Cloudflare 为本站提供 CDN 加速与安全防护支持以及服务器支持.
感谢活佛 DNSHE 提供免费二级域名支持.