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. ...
随机推荐
- Springboot:员工管理之首页(十(2))
访问首页可以通过两种方式: 1:编写controller 2:自定义扩展视图解析器(推荐使用) 1:编写Controller com\springboot\controller\IndexContro ...
- 微信小程序基本知识
逻辑实现 1 使用动态数据展示列表(可以考虑使用wx:for属性配合动态数组渲染全部列表项,以减少WXML页面的代码量) eg: <view class='listGroup' wx:for= ...
- 一年时间,Pipenv就成为Python官方推荐的顶级工具?
Pipenv是Kenneth Reitz在一年多前创建的“面向程序员的Python开发工作流程”,现在已成为管理软件包依赖关系的Python官方推荐资源. Python软件包安装管理的简要历史 为了正 ...
- cdn服务器
CDN的基本原理和基础架构 CDN是将源站内容分发至最接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率.解决因分布.带宽.服务器性能带来的访问延迟问题,适用于站点加速.点播.直 ...
- python学习02python入门二
学前须知:1.本文档有关内容均建立在python3.x版本上,python2.x已经成为历史,如有需要,文内会特别说明. 2.本文使用的编辑器多为架构在Windows上的pycharm,如需了解Lin ...
- .Net平台GC VS JVM垃圾回收
前言 不知道你平时是否关注程序内存使用情况,我是关注的比较少,正好借着优化本地一个程序的空对比了一下.Net平台垃圾回收和jvm垃圾回收,顺便用dotMemory看了程序运行后的内存快照,生成内存快照 ...
- 徐州I
#include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<=b;++i) #defi ...
- 基于规则的分类——RIPPER算法
在<分类:基于规则的分类技术>中已经比较详细的介绍了基于规则的分类方法,RIPPER算法则是其中一种具体构造基于规则的分类器的方法.在RIPPER算法中,有几个点是算法的重要构成部分,需要 ...
- python操作ftp文件
from ftplib import FTP ftp = FTP('ftp.abc.com') ftp.login(user='username', passwd='********') ftp.cw ...
- QTP VBScript RegExp对象的运用
下面来讲讲RegExp对象: Vbs提供了针对正则表达式的一个非常实用的类,就是RegExp Global属性:代表全局匹配 IgnoreCase属性:大小写忽略 Pattern属性:正则表达式 Ex ...