原来python如此神奇
一、优缺点分析
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如此神奇的更多相关文章
- 【转】Python的神奇方法指南
[转]Python的神奇方法指南 有关Python内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Picklin ...
- Python 的神奇方法指南
简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling). 你可以把它当作一 ...
- Python的神奇方法指南
参考:http://article.yeeyan.org/view/311527/287706
- Python漫谈-比较运算符和类的神奇方法
昨天遇到一个Python问题,今天好奇试了一下 >>> a = {1:23,'ab':56} >>> b = {2:22,'ab':57} >>> ...
- 支付宝AR红包引出Python中的PIL小试
这两天支付宝AR红包火了,周围的同学全在玩.可是我一直在想这个原理是什么?通过请教大神和思考,知道了它有两个限定条件:GPS地理位置和图片的识别.所以,只要我们有了这两个限定条件,就不难进行该红包的破 ...
- PAT 1038 体验Python之美
1038. Recover the Smallest Number (30) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHE ...
- python做量化交易干货分享
http://www.newsmth.NET/nForum/#!article/Python/128763 最近程序化交易很热,量化也是我很感兴趣的一块. 国内量化交易的平台有几家,我个人比较喜欢用的 ...
- 为什么Python编程被国家教育如此重视?请开始你的表演!
高考新宠 在高考更改之前,提起编程,人们可能更多的会想起c语言之类的. 然而,高考更始之后,Python这门编程说话一夜之间传进了千家万户. 现实上,在IEEE(美国电气电子工程师学会出书的旗舰杂志) ...
- 从0开始的Python学习002python的数据类型
在创建变量的时候不用声明数据类型 # 创建变量 a = 10 # 打印变量值 print(a) 结果如下: 这种感觉和Java有很大的不同,感觉python很神奇,数据的类型是python自己决定的. ...
随机推荐
- .net中DES加密算法研究
/// <summary> /// DES加密算法 /// </summary> /// <param name="toEncrypt">要加密 ...
- CF 551 D.Serval and Rooted Tree 树形DP
传送门:http://codeforces.com/contest/1153/problem/D 思路: 这道题想了一天,突发奇想,就是维护每个点两个值,第几大和第几小,就可以有传递性了. #incl ...
- CodeForces - 940E - Cashback +贪心+DP
传送门:CodeForces - 940E - Cashback 题意:在一个长度为n的数组中,可以分出长度为 k 连续的多个数组b(每个数组 b 的 k 可不相同),然后,可以对每个数组 b 进行删 ...
- HDU2485Destroying the bus stations 拆点网络流求割点个数
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2485 题目要求:删除最少的点,使得源点到汇点的距离大于k 思路:拆点.建图求费用小于等于k的最大流 # ...
- andriod开发--使用Http的Get和Post方式与网络交互通信
package com.example.a350773523.myapplication; import android.os.AsyncTask; import android.support.v7 ...
- gulp的介绍和手动安装
gulp, 前端自动化工具, 文件操作, 项目上线之前,将碎片文件合并,将ES6转成ES5,文件压缩,快速搭建服务器... gulp基于node环境 gulp就是node的一个非内置的小模块 gulp ...
- Java服务器-Disruptor使用注意
最近看了一下部署游戏后台的服务器状况,发现我的一个Java程序其占用的CPU时长超过100%,排查后发现竟是Disruptor引起的,让我们来看看究竟为什么Disruptor会有这样的表现. 发现占用 ...
- Python---列表的学习(二)
列表的第二部分 (1)列表的排序 1)使用方法sort()可对列表进行永久性排序 food = ['apple','orange','pear','grape'] food.sort() print( ...
- 使用Kubectl部署应用
目录 使用Kubectl部署应用 Kubectl部署流程 部署一个简单的Demo网站 一旦运行了Kubernetes集群,就可以在其上部署容器化应用程序.因此在开始之前,我们需要先确保集群已经准 ...
- Docker版本与centos和ubuntu环境下docker安装介绍
# Docker版本与安装介绍 * Docker-CE 和 Docker-EE * Centos 上安装 Docker-CE * Ubuntu 上安装 Docker-CE ## Docker-CE和D ...