概述:

  用一个星期加上五一的三天假期自学了python,在Mac系统上重新写出了四则运算的程序,编译器是PyCharm,相当于完成了作业2.d)"选一个你从来没有学过的编程语言,试一试实现基本功能"这个方向。

  用python写的这个程序能实现分数的加减程序,实现带加减乘除和括号的计算题,实现随机生成100道简单计算题,比之前用C++写的程序功能更加完善,更加简洁!

关键点:

  调用两个模板。

  1)类似C++和Java,格式是 对象.方法(),Fraction()方法,能直接表示分数。

  2)random.randint(a,b)用来生成a-b范围内的随机整数。

   p=["+","-","*","/"];

   random.choice(p)

   p表示字符数组,random.choice(p)表示从数组p中随机抽取字符!

过程:

  1)

  

  这段代码的功能是实现两个分数的加减乘除,并且实现用户输入并判断正误,最后统计正确和错误的个数!

  用x,y,a,b分别表示第一个分数的分子,第一个分数的分母,第二个分数的分子,第二个分数的分母!

  m,n表示用户输入的答案,m是分子,n是分母,然后用if else语句进行判断,得出正误。

  h,i是计数器,分别记录正确和错误的个数,控制台运行结果如下:

  分别输入了1/2和1/3,前三个运算正确,显示"Congratulations!! your answer is right!"

  第四个运算错误,显示"The right answer of '(x/y)/(a/b) is: 3/2'"

  最后统计出正确答案个数为3,错误答案个数为1.

2)-------------------------------------------------------------------------------------------------------------------------------

  产生10个随机变量,范围从1到20,分别用a1-a10表示。

  然后生成3个不同类型的计算题,并让用户输入答案,机器判断对错,控制台结果如下:

  问题1的答案是64,我回答正确了。

  问题2和3的答案分别是1616/741,-4039/78,我回答错误,没仔细去算,比较复杂,随便填了两个答案!

3)-----------------------------------------------------------------------------------------------------------------

  最后一个环节是Level 3,随机生成100道计算题。

  先用数组存放加减乘除符号,再在print中以 随机数_符号_随机数的方式表示算式。

  在算式外加while循环,计数器count初始值设为1,循环100次,生成100道式子,结果如下:

  一共有100个Question,数字随机,运算符随机。

总结:

  1)这个程序是我自己写的,由于PyCharm编译器不能再字符和字符串中出现中文,注释也不能用中文,所以只能在博客中打字注释,功能上比第一次写的完善了很多!这也得益于python是解释性语言,语法非常简单:比如两个分数的四则运算这个功能,用C++需要用到operation+、重载等功能,代码行数近100行,但用python只需9行就能搞定!

  2)这个程序有个缺陷:您在ppt上的要求是生成的100道计算题中不能有重复,比如(1+2)和(2+1)就是重复的题目,而我用python编写时并没有实现这个细节,毕竟只用1星期看书学,有很多细节没有学到位,现在仍在思考,如果5月7号之前想出来一定修改发到博客!

  3)通过这一个星期的python自学,收获颇多,尤其被它的简洁语法所震撼,这个程序我相信还能用更简洁的方式表示。

和C++、C相比,python更简洁,不需要考虑底层的因素,比如指针、内存的占用释放等复杂的东西,不过反过来说,在运行效率上,python比不上C、C++。但想想,在普通的马路上,出租车和F1赛车一起行驶,速度上并不会有太大的差别,二者的差距只有到赛道上才能体现。对于我们学生来说,很少会编写超大程序,所以python很适合作为入门级编程语言,很容易上手!!

  4)cnblogs貌似不能上传文件,python的代码我会在5月7号前跟其它作业一起打包发到范老师QQ/邮箱中,您可以运行试下!

作业1+2.四则运算(改进后完整版,用python写的)_064121陶源的更多相关文章

  1. 软件工程课堂作业(二)续——升级完整版随机产生四则运算题目(C++)

    一.设计思想: 1.根据题目新设要求,我将它们分为两类:一类是用户输入数目,根据这个数目改变一系列后续问题:另一类是用户输入0或1,分情况解决问题. 2.针对这两类要求,具体设计思路已在上篇博文中写出 ...

  2. 被女朋友三番五次拉黑后,我用 Python 写了个“舔狗”必备神器

    在一个阳光明媚的周日,我打开窗户呼吸了一口新鲜空气.阳光灿烂,岁月静好,又是一个约女朋友出去爬山吃饭看电影的好日子. 想到女朋友的大眼睛,我脸上不禁洋溢起了幸福的微笑.打开微信,给女朋友发出去一个美好 ...

  3. Swoole入门到实战 打造高性能 赛事直播平台(完整版)

    Thinkphp+Swoole入门到实战打造高性能赛事直播平台 第1章 课程介绍 欢迎大家来到swoole的课程!本章主要是介绍了swoole的一些特性,以及使用场景,并且分享了swoole在其他公司 ...

  4. Thinkphp5.0 仿百度糯米 开发多商家 电商平台(完整版)

    目录第1章 课程简介第2章 需求分析第3章 快速掌握thinkphp5第4章 任性的TP5模块第5章 生活服务分类管理模块第6章 百度地图应用封装第7章 打造属于TP5自己的发送邮件服务第8章 商户模 ...

  5. 结对作业——随机生成四则运算(Core 第7组)

    结对作业 ——随机生成四则运算(core第7组) 吕佳玲 PB16060145 涂涵越 PB16060282 GITHUB地址 https://github.com/hytu99/homework_2 ...

  6. Linux学习总结(1)——Linux命令大全完整版

    Linux命令大全完整版 目    录I 1. linux系统管理命令1 adduser1 chfn(change finger information)1 chsh(change shell)1 d ...

  7. AI工程师职业规划和学习路线完整版

    AI工程师职业规划和学习路线完整版   如何成为一名机器学习算法工程师 成为一名合格的开发工程师不是一件简单的事情,需要掌握从开发到调试到优化等一系列能 力,这些能力中的每一项掌握起来都需要足够的努力 ...

  8. 《死磕 Elasticsearch 方法论》:普通程序员高效精进的 10 大狠招!(完整版)

    原文:<死磕 Elasticsearch 方法论>:普通程序员高效精进的 10 大狠招!(完整版) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链 ...

  9. 如何安全的将VMware vCenter Server使用的SQL Server Express数据库平滑升级到完整版

    背景: 由于建设初期使用的vSphere vCenter for Windows版,其中安装自动化过程中会使用SQL Server Express的免费版数据库进行基础环境构建.而此时随着业务量的增加 ...

随机推荐

  1. Appium1.9.1 之 Desired Capabilities 释疑

    服务关键字 Desired Capabilities在启动session的时候是必须提供的. Desired Capabilities本质上是以key value字典的方式存放,客户端将这些键值对发给 ...

  2. linux的压缩解压命令全解

    .tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)——————————————— .zip解压:un ...

  3. hashCode相关性能优化

    学习下hashMap中用到的关于hashCode性能优化技巧.作为笔记.为之后并发深入作基础. 1.关于提高性能的hash算法 在被模的位数为2的n次方时,用位与取代效率低下的模运算.位与效率相比模运 ...

  4. 基于Redis的INCR实现一个限流器

    模式:计数器 计数器是 Redis 的原子性自增操作可实现的最直观的模式了,它的想法相当简单:每当某个操作发生时,向 Redis 发送一个 INCR 命令. 比如在一个 web 应用程序中,如果想知道 ...

  5. 快速排序 Java实现的快速排序

    快速排序  Java实现的快速排序: package xc; import java.util.Arrays; import java.util.Random; /** * * @author dax ...

  6. redis 基本命令

    set times 2017.12.12  设置键名键值 get times  获取键名 exists times 检测键名是否存在 type times 键名的类型 expire times 6   ...

  7. WebService 的CXF框架 WS独立服务之HelloWorld

    WebService:不同系统不同语言的数据交互, CXF主要分为两种服务方式: 1 )JAX-WS:传输数据, xml格式,基于SOAP协议(规范:规定了xml传递数据的编码规范) ; 2 )JAX ...

  8. 转载 [深入学习C#]C#实现多线程的方式:使用Parallel类

    简介 在C#中实现多线程的另一个方式是使用Parallel类. 在.NET4中 ,另一个新增的抽象线程是Parallel类 .这个类定义了并行的for和foreach的 静态方法.在为 for和 fo ...

  9. 分布式缓存技术redis系列(三)——redis高级应用(主从、事务与锁、持久化)

    上文<详细讲解redis数据结构(内存模型)以及常用命令>介绍了redis的数据类型以及常用命令,本文我们来学习下redis的一些高级特性. 安全性设置 设置客户端操作秘密 redis安装 ...

  10. PAT A1033 To Fill or Not to Fill (25 分)——贪心

    With highways available, driving a car from Hangzhou to any other city is easy. But since the tank c ...