一、优缺点分析

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语言独立于平台性质,同时开发周期短,程序员易于上手;同时底层封装性强,代码更加简洁;

原来python如此神奇的更多相关文章

  1. 【转】Python的神奇方法指南

    [转]Python的神奇方法指南 有关Python内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Picklin ...

  2. Python 的神奇方法指南

    简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling). 你可以把它当作一 ...

  3. Python的神奇方法指南

    参考:http://article.yeeyan.org/view/311527/287706

  4. Python漫谈-比较运算符和类的神奇方法

    昨天遇到一个Python问题,今天好奇试了一下 >>> a = {1:23,'ab':56} >>> b = {2:22,'ab':57} >>> ...

  5. 支付宝AR红包引出Python中的PIL小试

    这两天支付宝AR红包火了,周围的同学全在玩.可是我一直在想这个原理是什么?通过请教大神和思考,知道了它有两个限定条件:GPS地理位置和图片的识别.所以,只要我们有了这两个限定条件,就不难进行该红包的破 ...

  6. PAT 1038 体验Python之美

    1038. Recover the Smallest Number (30) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHE ...

  7. python做量化交易干货分享

    http://www.newsmth.NET/nForum/#!article/Python/128763 最近程序化交易很热,量化也是我很感兴趣的一块. 国内量化交易的平台有几家,我个人比较喜欢用的 ...

  8. 为什么Python编程被国家教育如此重视?请开始你的表演!

    高考新宠 在高考更改之前,提起编程,人们可能更多的会想起c语言之类的. 然而,高考更始之后,Python这门编程说话一夜之间传进了千家万户. 现实上,在IEEE(美国电气电子工程师学会出书的旗舰杂志) ...

  9. 从0开始的Python学习002python的数据类型

    在创建变量的时候不用声明数据类型 # 创建变量 a = 10 # 打印变量值 print(a) 结果如下: 这种感觉和Java有很大的不同,感觉python很神奇,数据的类型是python自己决定的. ...

随机推荐

  1. .net中DES加密算法研究

    /// <summary> /// DES加密算法 /// </summary> /// <param name="toEncrypt">要加密 ...

  2. CF 551 D.Serval and Rooted Tree 树形DP

    传送门:http://codeforces.com/contest/1153/problem/D 思路: 这道题想了一天,突发奇想,就是维护每个点两个值,第几大和第几小,就可以有传递性了. #incl ...

  3. CodeForces - 940E - Cashback +贪心+DP

    传送门:CodeForces - 940E - Cashback 题意:在一个长度为n的数组中,可以分出长度为 k 连续的多个数组b(每个数组 b 的 k 可不相同),然后,可以对每个数组 b 进行删 ...

  4. HDU2485Destroying the bus stations 拆点网络流求割点个数

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2485 题目要求:删除最少的点,使得源点到汇点的距离大于k 思路:拆点.建图求费用小于等于k的最大流 # ...

  5. andriod开发--使用Http的Get和Post方式与网络交互通信

    package com.example.a350773523.myapplication; import android.os.AsyncTask; import android.support.v7 ...

  6. gulp的介绍和手动安装

    gulp, 前端自动化工具, 文件操作, 项目上线之前,将碎片文件合并,将ES6转成ES5,文件压缩,快速搭建服务器... gulp基于node环境 gulp就是node的一个非内置的小模块 gulp ...

  7. Java服务器-Disruptor使用注意

    最近看了一下部署游戏后台的服务器状况,发现我的一个Java程序其占用的CPU时长超过100%,排查后发现竟是Disruptor引起的,让我们来看看究竟为什么Disruptor会有这样的表现. 发现占用 ...

  8. Python---列表的学习(二)

    列表的第二部分 (1)列表的排序 1)使用方法sort()可对列表进行永久性排序 food = ['apple','orange','pear','grape'] food.sort() print( ...

  9. 使用Kubectl部署应用

    目录 使用Kubectl部署应用  Kubectl部署流程  部署一个简单的Demo网站  一旦运行了Kubernetes集群,就可以在其上部署容器化应用程序.因此在开始之前,我们需要先确保集群已经准 ...

  10. Docker版本与centos和ubuntu环境下docker安装介绍

    # Docker版本与安装介绍 * Docker-CE 和 Docker-EE * Centos 上安装 Docker-CE * Ubuntu 上安装 Docker-CE ## Docker-CE和D ...