Jupyter笔记本作业格式和分发
dsassign的Python项目详细描述
ds分配:Jupyter笔记本分配
创作和分发Jupyter笔记本作业的格式和工具
需要:Python 3(即使安装了它,也要检查它是您的工作版本python --version
)
背景
这是dsassign(https://github.com/DS-100/ds-assign)的数据100分支。 迄今为止的重大变化: 将学生反应细胞类型从“降价”设置为“原始”,似乎可以解决很多乳胶问题。在
入门
课程教师通过创建一个 包含要验证的设置代码、问题、解决方案和测试的笔记本 这些解决方案。此项目准备分配给 学生和后来自动得分。在
notebook format不是特定于编程的 语言或自动签名框架,但设计用于 okpy,这是基于Python的。对 支持其他测试框架,如[nbgrader, and other programming languages are welcome.
An example notebook appears in ^{
dsassigntests/example.ipynbtests/outputsome/course
tests/example.ipynb
:一个示例笔记本路径,您需要将其替换为指向主解决方案笔记本的路径,该路径使用来自notebook format的元数据和命令进行了扩充。在tests/output
:将存储输出的路径- 输出包含两个目录
autograder
和student
autograder
目录包含一整套测试和一个解决方案笔记本(解决方案笔记本不同于主笔记本,因为它不是按照notebook format格式化的,而是看起来像有解决方案的学生笔记本)student
目录包含自动创建的修订版本。在- Note:当前,输出目录将不包含您在创建主笔记本时使用的数据文件,例如csv或json文件:确保在将其发布给学生之前将其添加到
student
目录中
- 输出包含两个目录
some/course
是okpy上列出的作业的端点/路径(通常以您的大学缩写开头,其中有一个课程名称,以作业名称结尾)。在
在运行dsassign
命令之前,请确保自上而下(Cell -> Run All
)运行整个笔记本以确保每个单元格都有正确的输出——这些单元格的输出将被转换为存储在所提供的输出目录中的相应测试(dsassign
命令的第二个参数)。如果更改测试,则需要重新运行笔记本和dsassign
命令来重新生成文件。Note:dsassign
将发出一个错误并退出(如果输出目录已经存在)。在
然后可以根据结果生成PDF:
^{pr2}$小心
题外测试
File "/opt/conda/lib/python3.6/site-packages/dsassign/to_ok.py", line 141, in gen_ok_cells
assert not is_test_cell(cell), 'Test outside of a question: ' + str(cell)
AssertionError: Test outside of a question:
如果您得到这个错误,这意味着在声明问题的markdown单元格(即包含#BEGIN QUESTION
)和包含{
SOLUTION:删除解决方案单元格和带有#BEGIN QUESTION
的降价单元格之间或解决方案单元格与# TEST
单元格之间的额外代码/降价单元格。在
最后一行空白的测试单元
因此,如果测试的末尾有一个空的测试,那么在测试的末尾会自动添加一个分号。在
示例:
# TEST
movies.head(1)['plots'][0]=='Two imprisoned men bond over a number of years, finding solace and eventual redemption through acts of common decency.'
在学生的笔记本上显示以下未通过的测试:
>>> movies.head(1)['plots'][0]=='Two imprisoned men bond over a number of years, finding solace and eventual redemption through acts of common decency.';
>>>
# Error: expected
# True
# but got
^ {STR 1 } $解决方案< /强>:删除^ {CD17>}单元结尾的空白行。在
- 项目
标签: