201843 2019-2020-2 《Python程序设计》实验二报告
201843 2019-2020-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 1843
姓名: 李新锐
学号:20184302
实验教师:王志强
实验日期:2020年4月11日
必修/选修: 公选课
1.实验内容
设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
考核基本语法、判定语句、循环语句、逻辑运算等知识点
2. 实验过程及结果
*实验的完整代码和码云链接如下:
-码云链接
-代码截图:
- 首先叙述一下整体思路:我们将运算数与运算符各自为各自的输入,由于Python中的输入input都为字符串,所以对于小数还是整数的类型转化需要分开,所以在一开始需要询问是选择纯整数运算还是浮点数运算,对于纯整数运算我们只能输入整数否则会报错,而对于浮点数来说我们可以输入整数,也可以输入浮点数,也可以混合输入,最后的运算结果保留到小数点的后十位,在浮点数运算中如果输入了两个整数,虽然结果正确,但是会带有小数点。然后整体套入一个循环条件为1的while循环,在每次做完计算后都会询问是否再次进行运算,如果输入的为“是”,则继续循环,如果输入其它则退出循环。在开头有两个函数fun1和fun2,主要是用来计算两个数的最小公倍数和最大公约数。主要用于分数计算,我有添加了一个分数运算,只可以输入分数,否则会报错,最后结果也会用分数表示类似于1/3+2/3也会表示为1.0/1.0.对于纯整数运算我们提供+,-,,/,mod,^ ; 对于浮点数运算我提供+,-,,/,^,因为mod运算只能用于整数,对于分数我们提供+,-,*,/。
- 我们将整个计算器分为三部分,第一部分为纯整数运算,因为对输入采取的是强制整数类型转换所以必须输入的是整数否则会进行报错提醒。纯整数运算结果或者参与运算数可以为负。对于指数运算底数不能为0,除数不能为0,如果为0,则会重新输入。对于指数操作我们主要使用了**,而mod运算使用的是%。
- 第二部分我们输入为浮点数,采用round函数将结果限制在小数点后十位。
- 第三部分为分数运算,关于如何将分数转化为我们能够计算的数,我们主要采用了字符串分割的思想,使用index函数采用“/”为分割信号,将“/”前面的字符和后面的字符,需注意a[1:3]前面位置是包含的,后面位置不包含。由于分子和分母我们一般不使用小数,所以强制转化为整数。对于加法和减法我们都分成两类,一类是分母相同的一类是分母不同的。对于分母相同的,我们只计算其分子的和,然后将分子和以及分母带入求最大公约数的函数中求出最大公约数然后约分。对于分母不同的我们先将两个分母带入求最小公倍数的函数中求出最小公倍数,再用最小公倍数除以各自的分母,查看它们乘以多少才到达了虽大公倍数,再用此数乘分子然后相加,最后仍需约分。对于分数的乘法来说分子乘分子,分母乘分母,再约分。而对于除法而言,我们采用除一个数就是乘该数的倒数。
- 关于最小公倍数和最大公约数的查找我分别放入了fun1和fun2,采用的是欧几里得法(辗转相除法),这条算法基于一个定理:两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。而最小公倍数为:最小公倍数 = 两个整数的乘积 / 最大公约数。
- 对于代码的改进还可以加入开方运算,初步想法为使用分数指数,即pow(144,0.5),以整数开方为例代码为:
a=int(input("请输入您想计算的第一个数:"))
c=input("请输入您想计算的第二个数:")
where1 = c.index("/")
c1 = int(c[0:where1])
c2 = int(c[where1+1:])
answer=pow(a,c1/c2)
print(answer)
实验结果截图:
对于分数运算其实可以使用任意位数的分子分母因为主要是以“/”来进行分割,而不是长度。
对于分数的运算由于不能输入不带“/”符号的数,所以除数为0也就不可行了。
对于纯整数不能输入浮点数,主要卡在强制类型转换
可以看到整数与浮点数的运算是可行的。
3. 实验过程中遇到的问题和解决过程
- 问题1:在输入两个浮点数进行运算的时候,我们的结果出现了不规则的情况。
- 问题1解决方案:使用了round函数,将结果截止到小数点后十位。
- 问题2:在一开始的截取字符串的时候我们使用的是a[1,2],结果报错所说,索引只能为整数。
- 问题2解决方案:将“,”改为“:”,主要是太固有C语言的语法和对python的语法还是不够熟悉。
- 问题3:在一开始的分数运算结果约分时,对于公约数为0的情况没有加以注意。
- 问题3解决方案:使用if区分开公约数为0和不为0的情况。
其他(感悟、思考等)
通过该次实验我知道了一些新的函数如round也对一些旧的函数如index有了更加深刻的认识。对于字符串的使用和定义,以及一些操作有了更深层次的领悟。对于python的输入,如何得到想要的输入类型,更加熟悉了。对于判定语句如if和循环语句的应用以及嵌套掌握的更熟练了。对于逻辑运算和基本的语法的领悟也有了一定的提升。感到python真的是一个非常简洁明了和实用的语言。
参考资料
201843 2019-2020-2 《Python程序设计》实验二报告的更多相关文章
- Python程序设计实验报告二:顺序结构程序设计(验证性实验)
安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 崔攀 学号3190505136 成绩 日期 2020.3.22 指导老师 修宇 [实验 ...
- 201922904李龙威 2019-2020-2 《Python程序设计》实验二报告
20192204 2019-2020-2 <Python程序设计>实验二报告 课程:<Python程序设计> 班级: 1922 姓名: 李龙威 学号:20192204 实验教师 ...
- 20192113 2020-2021-2 《Python程序设计》实验二报告
20192113 2020-2021-2 <Python程序设计>实验二报告 课程:<Python程序设计> 班级: 1921 姓名: 衣丽莎 学号:20192113 实验教师 ...
- PYTHON程序设计实验
Python程序设计实验报告一: 熟悉IDLE和在线编程平台 安徽工程大学 Python程序设计实验报告 班级 物流191 姓名 邹缕学号 3190505117成绩 ▁▁▁ 日期 2020.3.5 指 ...
- Python程序设计实验报告一:熟悉IDLE和在线编程平台
安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 崔攀 学号3190505136 成绩_____ 日期 2020.3.8 指导老师 ...
- Python程序设计 实验 1 熟悉 IDLE 和在线编程平台
------------恢复内容开始------------ 安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 姚彩琴 学号3190505129 成绩 日期 2 ...
- Python程序设计实验报告四:循环结构程序设计(设计型实验)
安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 姚彩琴 学号3190505129 成绩 日期 2020.4.8 指导老师 修宇 [实验名称 ...
- Python程序设计实验报告三:分支结构程序设计
安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 姚彩琴 学号3190505129 成绩 日期 2020.4.5 指导老师 修宇 [实验目的 ...
- 20145316《Java程序设计》实验二报告
20145316<Java程序设计>实验二报告 一.实验目的与要求 1.初步掌握单元测试和TDD. 2.理解并掌握面向对象三要素:封装.继承.多态. 3.初步掌握UML建模. 4.熟悉S. ...
随机推荐
- Spring5:Java Config
@Configuration @Bean @ComponentScan @ImportResource 使用Java的方式配置spring,完全不使用spring配置文件,交给java来做! 两个注解 ...
- Java 多线程实现方式二:实现 Runnable 接口
由于java是单继承,很多时候为了实现多线程 通过继承 Thread 类后,就不能再继承其他类了.为了方便可以通过实现 Runnable 接口来实现,和Tread 类似需要重写run 方法. 下面通过 ...
- 电脑Win10晚上让它更新,为何第二天开机蓝屏?
大家好,欢迎来到<电脑讲堂>,我是主持人高帅帅.PS:没错,就是那个人见人爱,花见花开的高帅帅. 话说,在一个月黑风高的夜晚,我晚上离开实验室,离开前看到了电脑的系统更新提醒,就顺手点了一 ...
- synchronized 代码块怎么用
加不加 synchronized 有什么区别? synchronized 作为悲观锁,锁住了什么? 之前 2 篇文章我们已经知道 synchronized 的使用方法以及锁的内容(实例对象和Class ...
- Hadoop的下载和安装
Hadoop的下载和安装 一:Hadoop的简介 Apache的Hadoop是一个开源的.可靠的.可扩展的系统架构,可利用分布式架构来存储海量数据,以及实现分布式的计算. Hadoop许使用简单的编程 ...
- Scala教程之:Option-Some-None
文章目录 Option和Some Option和None Option和模式匹配 在java 8中,为了避免NullPointerException,引入了Option,在Scala中也有同样的用法. ...
- 在线图片资源转换成Base64格式
function getBase64Image(img) { var canvas = document.createElement("canvas"); canvas.width ...
- [软件共享]将数据库中的数据导出为SQL脚本
可以直接将数据库中的数据导出为脚本,并可以自己设置过滤条件.使用方法很简单,不在多说了.下面是软件截图.123 下载:http://files.cnblogs.com/pw/mssql2.rar
- 自定义View之Canvas使用
自定义View的绘制流程一般都是这样:提前创建好Paint对象,重写onDraw(),把绘制代码卸载ondraw()里面,大致如下: Paint paint = new Paint(); @Overr ...
- 参加Windows7深圳社区发布会
昨天下午参加了深圳DotNet俱乐部组织的Windows7深圳社区发布会. 开场:朱兴林,俱乐部简介及Win7的发布情况 Session 1,万洪,Windows7的新特性 Session 2,张善友 ...