结对编程——个人项目互评
因为个人疏忽,结对并不是很顺利,幸运的是在结对落实之前,请大佬分享了他的代码用以学习。总之,先谢过大佬。那么,分析开始。
一、问题描述
1、用户:老师(姓名、密码、账户类型)
2、功能:
- 用户信息检查
- 依据用户输入数字随机生成相应题目数的小学、初中、高中数学试卷
- 可切换账户类型

二、代码分析
1、使用语言及编译器:python3 & Spyder
2、文件组成有三部曲:
主函数源文件main.py + 功能函数源文件math1.py,
额外还考虑了试卷答案的源文件answer.py
3、内容分析
先分析main.py——这部分是一个外壳。
用户信息的存储写成列表放在代码中,以用户名做索引下标,考虑到扩展性和代码体量,这个写法会更适合固定且小体量的数据信息。如果用文本文件存储信息,可以减少代码体量,存储空间大,但是安全性也不太高。

总共有三个函数,实现项目需求功能的有grade_select函数,让用户输入题目数量,然后调用math.py的函数进行出题;主函数main用while循环打印功能菜单。
函数、变量命名明确。注释也很规范。菜单的编写思路清晰且有条理,不得不说,用python的列表来存储信息进行检索、输入输出都非常灵活。
接下来分析核心功能源文件math1.py。
主要由4个功能函数组成,关系如下:

1)按账户类型分类初始化符号列表option_1,option_2,option_3:
随账户等级上升,符号(难度)也在变多(高),贴近实际。


2)处理随机组卷:
引用random库,其rand函数抽取随机数——数字,choice函数在所给列表中随机抽取元素——符号,shuffle函数打乱序列顺序。
对于每道随机题,拆分成“首数,符,数,符,数……”首先随机生成操作符个数,用字符串通过append函数存储题目。初中题多出来的符号放入字符串中的位置需要特别规定,高中多出来三角函数则被直接处理用作数字。
3)处理查重:
调用系统函数,遍历所有文件的每一行进行查重。

4)文件生成:
调用系统函数创建文件夹,使用字符串记录文件路径。
值得一提的是,这个部分作为试卷答案的调用外壳,个人认为这样的考量很细致。
三、收获
整份代码看下来,注释稍显晦涩,但是不得不说结构很清爽,从数据的调用、字符串的删增改、文件写入读取上来说,python简洁高效且方便,更依靠逻辑和对基础数据结构的灵活运用来实现希望的功能。代码的作者使用变量精简,引入的也是比较基础的random、os和time函数库。“原来思路可以这样理,这里可以这样写”。从程序运行上讲,很多细节处、菜单交互用语的趣味性以及引导的完整都很让人觉得很稳重、沉着。收获良多。

浙公网安备 33010602011771号