【Python】中小学自动卷子生成程序优缺分析
项目需求
-
登陆:用户输入用户名和密码,程序需要检测登陆信息是否存在
-
操作:需要输入所需题目数量
-
题目生成:按照用户对应年级信息,生成难度相配的随机数学题
-
打印输出:将随机生成结果输出打印到TXT文件中
优点分析
- 使用Python作为编程语言显著的特点是可读性更强,并且代码更为简洁;
项目的需求基本都已实现,部分功能还需推敲改进,会在下文缺点中谈及
- 比较好的是考虑到了去重的问题,虽然我们知道出现重复的概率比较微小,
但是这里能想到就还是不错,代码段如下所示:
解决重复问题首先考虑会出现哪些重复情况,这里考虑了两种:
- 是否会产生本次随机生成题目相同的试题
- 是否会产生该用户历史试题文件下的重复问题
代码的主要思想就是把列表转换为字符串加入集合,然后进行判断查看是否出现重
复,一旦出现重复就重新生成
缺点分析
- 在随机插入括号时,并没有去考虑括号加在乘除法外不起作用的问题
我们在确定括号个数时,是通过取出随机数的方式,代码如下
bracket_nub = random.randint(0,termNub-2)
取出随机数后需要考虑组合情况,数学表达式关系大致可以总结为
brackt_Nub = C(2,operator_Nub)-1
在这里我们省去的一种情况是前后都是数字相组合的状况
- 在三角函数与开方还有求平方的计算题中,生成的随机试题与实际需求其实会
有出入,在所有三角函数运算中,只出现数字其实很难计算,必须依靠科学计算
器,并且如果因此需要保留原式,又会使题目失去原本的意义。同样的,开方和求
平方问题中也有类似脱离实际的地方,我们随机举例来看一下生成的试题结果
我们可以看到,其实基本这里所有随机生成的式子都面临了上述提到的问题,后续
有很大的改进空间,我们可以用数字组合上周期生成可以直接计算的三角函数,开
方计算时,可以加入判定被开根数是否能够进一步化简,而计算平方时,生成随机
数不宜过大,这些都是可以考虑改进的范畴。
同时,我们可以在上述随机样例中看到,当用户信息对应高中生时,随机生成的试题
里并没有出现开方和次方计算,希望在后续对算法进行优化,能够让试题结构更
多元。
- 代码风格不够统一,希望后续能够对变量命名规则等多加重视,统一风格,便
于读者查看。