结对编程——个人项目互评

因为个人疏忽,结对并不是很顺利,幸运的是在结对落实之前,请大佬分享了他的代码用以学习。总之,先谢过大佬。那么,分析开始。

一、问题描述

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函数库。“原来思路可以这样理,这里可以这样写”。从程序运行上讲,很多细节处、菜单交互用语的趣味性以及引导的完整都很让人觉得很稳重、沉着。收获良多。

 

 

 

 

 

 

 

 

 

 

 

posted @ 2021-09-28 23:58  一拾二六九三  阅读(66)  评论(0)    收藏  举报