因对 Python 感兴趣,于是早上吃早饭时看看。题目相对比较简单,最后一题代码写得比较随意。原本打算交上去测试一下,可惜海外党使用环境实在是卡得惨不忍睹,没办法写敲那么多代码上去。
题目:https://www.shiyanlou.com/contests/lou3/challenges
题目1: 存储学习记录
出现的问题:
- sqlite url schema 错误
- 外键设置错误
- 外键重复设置
解决方法:
- line 10:
sqlite://
改为sqlite:///
- line 22:
backref='user'
改为backref='course'
- 表设计为一对多的外键,故注释掉 line 28 & line 30
题目2: 追踪课程更新
出现的问题:
- 缺少 object 基类
- 缺少子类初始化
- @property 方法访问错误
- typename 缺少参数
- 浅拷贝错误
解决方法:
- line 5: 改为
class Course(object)
- line 21: 给
typename
传递参数 self - line 28: 替换为
super(BootcampCourse, self).__init__(name, True, lab_count)
- line 37: 改为调用
self.lab_count
- line 29: 改为调用
copy.deepcopy
题目3: 修复 Internal Server Error
出现的问题:
- filter_by 用法错误
- html 模板错误
解决方法:
- app/main/views.py line 34:
filter_by(id=id).first_or_404()
- app/templates/todolist.html line 4:
for('static', filename='js/todolist.js')
- app/templates/todolist.html line 9:
{{todolist.title|title}}
题目4: NoSQL 的艺术
潜在的问题:
- 从 bash 中读入的值为字符串
- mongodb 的 aggregate pipeline 操作
- sort 结果搜索: mongodb 的 aggregate 操作找了半天实在没找到如何从操作结果的 cursor 拿到排名,只得做如下妥协处理,读者可继续探究
|
|
题目5: 增加服务器管理功能
潜在的问题:
- 异常处理方式: 异常处理的部分原题目似乎并未写指示清楚, 这里用直接抛出 ScriptError 异常做处理
- csv 文件处理: 虽然其实并不是 csv 格式,但由于带空格的形式可以视为 csv 文件进行处理; 另一方面文件操作似乎并不支持单独一行的处理操作?
- 重复添加操作判断: 重复添加的判断逻辑应为: 当 hostip 和 user 同时相同时,则不能添加,否则可添加。
- 命令行参数处理: 最初决定使用 argparse 处理命令行参数,扫文档扫了半天没搞明白怎么添加 subparameter requirement,google 了一阵也很奇怪,最后还是决定直接暴力解包判断了
|
|