一、优缺点分析

1、缺点:

① 数学问题的生成中只考虑了消除乘除法加括号的无效情况(例如3*(4+5)或(6*5)/2这样的计算),但没有去掉加减法加括号的无效情况(例如(4+(7+8))或(3-(2-1)));

② 项目代码中变量的命名没有严格安装规范来,有些命名有点相似且无特定含义,给阅读代码的过程中造成了不小的困难,不方便理解,看起来会有些混乱。

2、 优点

① 代码是用python写的,能够熟练运用各种循环判断语句和列表,并且其中用到了许多便利简洁的函数,比如getcwd()获取文件地址、lstrip()截掉左边字符串、re.match()通过正则表达式进行匹配等等;

② 一对括号的插入,是在已知固定操作数个数的情况下,在包含所有括号对可能位置的列表中,random挑选能够插入的位置,因此得出来的数学题具有一定随机性,这个算法思路很独特;

③ 代码中对于中文字符的处理非常简便,值得参考,主要是要记得保存基本信息txt为utf-8的格式,调用open函数时也encoding=“utf-8”方式打开,然后就可以直接进行处理了;

④ 初高中的数学题要求插入根号平方和三角函数,因为random.random()范围是[0,1),所以将其与小于1的数(比如0.3、0.5)做比较,以此来达到随机的目的;

二、具体功能实现

1、InputInformation():录入附表中基本信息,用read函数读取txt文件,并根据换行符分割成列表:

2、LandAccount():登入个人账户,首先通过find判断输入格式是否正确,接着在列表中循环,看是否匹配到正确的账户名和密码:

3、GenerateQuestions():随机生成小初高的数学题,用了random函数实现随机化,并且还要去除掉括号的无效情况;

4、OutputFiles():生成文件夹和数学题txt,用datetime得到当前时间并格式化转为字符串,之后生成相应文件:

5、OldFiles():用于查重,将过去同一账户同一学历生成的题目保存到一个字符串中,并在生成每个数学题时通过find来比较是否有相同的题目:

三、   个人总结

我使用的是C++进行书写,在写完后才发现用这种语言写的童鞋比较少,后来想想发现C++书写的代码量较大,书写不易;在当今计算机软件开发的行业中多数使用python进行敏捷开发;而且python语言独立于平台性质,同时开发周期短,程序员易于上手;同时底层封装性强,代码更加简洁;

最新文章

  1. document.body / document.ducumentElement /等获取高度和宽度的区别 ----转载
  2. 最近的学习的linux命令笔记
  3. Word排版成树形结构技巧
  4. Oracle表空间、段、区和块
  5. toastr
  6. 学习java随笔第一篇:搭建java平台(java se)
  7. 准备着手学习python
  8. View如何设置16进制颜色值
  9. 关于学习方法的借鉴和有关C语言学习的调查
  10. SVN版本控制图标经常延时显示或未显示问题解决方法
  11. 企业级分布式监控系统-Zabbix基础
  12. Linux查看分区文件系统类型总结
  13. 关于java实现自定义曲线拟合的研究
  14. 对DOM,SAX,JDOM,DOM4J四种方法解析XML文件的分析
  15. The perception and large margin classifiers
  16. AR涂涂乐
  17. redis参数改进建议
  18. 51nod 1479 小Y的数论题
  19. Linux和Windows中查看端口占用情况
  20. 修改zerolog使log输出的文件名可以在goland里自动定位--技巧

热门文章

  1. vsftpd 530 Login incorrect问题处理
  2. 深刻剖析spring三种注入方式以及使用注解的原理
  3. JS-对象的深浅拷贝及其新增方法测试
  4. ES6之解构
  5. js 调用手机摄像头或相册并展示图片
  6. PHP工程师学Python数据类型
  7. Android Studio安卓学习笔记(三)Android用户界面的设计布局与组件(一)用户界面布局设计(1)
  8. yield 实现range()函数
  9. P2486 [SDOI2011]染色 维护区间块数 树链剖分
  10. HDU3068 最长回文 Manacher's Algorithm 马拉车算法 模板