咨询:使用Jupyter Notebooks制作Python课程作业的高效工作流
高效隐藏Jupyter Notebook解答的工作流方案
完全懂你的痛点——既要在同一个Notebook里留存自己的解答,又能快速生成只含题目的版本给学生,再也不用反复复制粘贴折腾。下面是我和身边授课同行常用的几个精简方案:
方法1:用Jupyter内置标签过滤解答
Jupyter Notebook/Lab支持给单元格打自定义标签,这是最原生且高效的方案:
- 给所有解答单元格打上
student-hidden这类专属标签(在单元格侧边栏的标签面板里添加) - 导出学生版时,用
nbconvert命令一键过滤掉带标签的单元格:
你本地保留完整带解答的版本,导出的学生版自动剔除解答,直接推GitHub即可。# 导出为干净的.ipynb文件给学生 jupyter nbconvert --TagRemovePreprocessor.remove_input_tags='{"student-hidden"}' your_notebook.ipynb --to ipynb --output student_version # 或者导出为HTML格式 jupyter nbconvert --TagRemovePreprocessor.remove_input_tags='{"student-hidden"}' your_notebook.ipynb --to html
方法2:用hide_code扩展可视化操作
如果偏好图形化界面,推荐安装Jupyter的hide_code扩展:
- 安装后每个单元格右上角会出现隐藏按钮,一键就能把解答单元格设为隐藏状态
- 导出时选择「Export Hidden Code」选项,直接生成不含解答的版本
- 还支持给解答设置密码,之后想开放参考时也很灵活
方法3:轻量Markdown注释分隔法
不想装扩展的话,用简单的Markdown标记就能区分题目和解答:
- 在解答单元格开头加
<!-- SOLUTION START -->,结尾加<!-- SOLUTION END --> - 用
sed命令批量移除标记间的内容生成学生版:
这个方法零依赖,适合快速处理单个或少量Notebook。sed '/<!-- SOLUTION START -->/,/<!-- SOLUTION END -->/d' your_notebook.ipynb > student_version.ipynb
方法4:Jupyter Book(适合课程体系化)
如果你的课程有多个Notebook,想做成完整的课程网站,Jupyter Book是绝佳选择:
- 在Notebook里用
{toggle}指令把解答做成可折叠模块 - 配置生成学生版时,设置折叠模块默认隐藏,甚至完全移除
- 最终生成静态网站推GitHub Pages,学生浏览体验会更好
我自己平时常用标签+nbconvert的组合,命令行可以批量处理多个Notebook,效率拉满。选最贴合你使用习惯的方案就行~
内容的提问来源于stack exchange,提问作者ElenorDavey
相关产品推荐
相关产品推荐

