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. ...
随机推荐
- Codeforces 1340B Nastya and Scoreboard(dp,贪心)
题目链接OvO 题目大意 给你\(n\)串数字,\(1\)代表该位置是亮的,\(0\)代表是灭的.你必须修改\(k\)个数字,使某些\(0\)变为\(1\).注意,只能把原来的\(0\)改成\(1 ...
- Vue 3.0 Composition API - 中文翻译
Composition API 发布转载请附原文链接 https://www.cnblogs.com/zgh-blog/articles/composition_api.html 这两天初步了解了下 ...
- Unity 游戏框架搭建 2019 (三十六~三十八) partial与public
在上一篇,我们把菜单的顺序从头到尾整理了一遍.在整理菜单顺序的过程中,记录了一个要做的事情. 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 整理完菜单顺序后,学习新的知识,解决随着示例 ...
- 一图了解redis
了解redis,这一张图就够了,话不多说,看图: 版权所有,转载请注明出处,欢迎讨论交流
- 模块sys,os
Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的. 在Pyt ...
- [转] Exchange 2013 安装部署详解
·Exchange 2013 部署:系统要求 823 / 3 部署 系统要求 Exchange 2013 zhou_ping 2013-02-17 ·Exchange 2013 部署:先决条件 752 ...
- JVM调优:GC 参数
2019独角兽企业重金招聘Python工程师标准>>> JVM调优:GC 参数 博客分类: java jvm 参考: <Memory Management in the Jav ...
- Java大数据秋招面试题
以下为整理的自己秋招遇到的面试题:主要是Java和大数据相关题型:根据印象整理了下,有些记不起来了. 死锁.乐观锁.悲观锁synchronized底层原理及膨胀机制ReetrantLock底层原理,源 ...
- uiautomatorviewer 出现安卓8.0级以上无法打开的解决方法
一..本人在使用Android自带的uiautomatorviewer工具来进行app元素定位时,出现了Android 9.0打开不了.出现了如下图错误提示: 经过网上的查阅,总结了几个解决的方法. ...
- 简单模拟实现Rxjs Observable
1.先定义类型 export type Observer = { next: (any) => void, complete?: (any) => void, } export inter ...