20184313 2019-2020-2 《Python程序设计》实验二报告

课程:《Python程序设计》

班级: 1843

姓名: 孙炜力

学号:20184313

实验教师:王志强

实验日期:2020年4月12日

必修/选修: 公选课

1.实验内容

设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。

考核基本语法、判定语句、循环语句、逻辑运算等知识点

2. 实验过程及结果

程序框架

ZhuanHuan函数

这个函数主要用于把中序表达式转换为后序表达式,参照上学期数据结构课程中的做法:

当读取的是操作数时,直接放置到输出;(考虑浮点数就先字符串拼接,读取完成后再转化为浮点型变量)

如果读取到的操作符为“(”或者栈为空时,直接入栈;

当读取的是操作符时,不直接放置到输出,必须先存放在某个地方(实际上为栈),然后进行优先级的比较:如果该操作符的优先级比栈顶的要高,那么就入栈;如果该操作符的优先级没有栈顶的高,那么栈顶的操作符就出栈,再接着比较当前栈顶操作符的优先级;

如果读取到的操作符为“)”,那么从栈弹出操作符,并写入输出,直到遇到“(”,“(”和“)”不写入到输出;

当输入为空时,将栈中的全部操作符弹出并写入到输出中

JiSuanHouXu函数

这个函数主要功能就是从后序序列中找出相应的操作数和运算符,先取最后一位为运算符,然后根据运算符的种类判断操作数的个数,取最后的操作数,并调用JiSuan函数进行运算

JiSuan函数

这个函数的用处就是根据输入的操作数和运算符进行运算,比较简单,主要用了一些if语句实现

运行结果

测试用例:

1-2!*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568%14))-(-4^3)/(16-3*2))

3.实验过程中遇到的问题和解决过程

问题1:在JiSuanHouXu(HouXu)函数中删除用过的操作数和运算符时当运算结果和操作数2相同时会少删除一个操作数

问题1解决方案:之前是用变量a保存操作数,并用while循环比对后序表达式最后一位是否为a来进行删除,但由于a可能与第二个操作数相等(如60-30=30),因此造成少删除一个操作数,影响运算结果,因此把操作数数量不同的运算符分开操作,避免该问题

问题2:在处理负数时一开始是在后序表达式中添加0.0并将-号入栈,但如符号在中序表达式的第一项(即不用加括号)而后面的运算符优先级又高于减号时会导致结果出错如-2%3会计算为-2

问题2解决方案:由于小数点不会被当作运算符入栈,因此用'.'代替'-'入栈,并将其优先级设为最高,在出栈时如果抛出的元素是'.'是时再转换为'-'

问题3:运算符的优先级应该是'+'、'-'同级,'*'、'/'同级,但为了方便计算我的程序中优先级是加法<减法<乘法<除法

问题3解决方案:这样做结果上没有错,因为加法和乘法都有结合律,但如果是纯粹考虑中序表达式向后序表达式的转换,结果是不一致的。如3+2-1,习惯上我们会先算3+2,再算5-1,但由于只用一个序列,因此我的程序算的是2-1+3,但由于加法结合律,结果是正确的

其他(感悟、思考等)

​通过这次实验,让我复习了上学期数据结构的知识,同时也让我对Python相较于C的优势有了更深刻的认识,在C语言中,栈的最简单的实现方式就是线性存储结构,这就要求栈存储的元素的数据类型还必须提前明确,还要考虑最大容量问题,而且在结构体中不能定义方法,而Python的序列可以不用考虑长度和数据类型的问题,而且可以在类中定义出栈和入栈的方法,方便移植。

​总之,这次实验让我重温了之前学到的一些编程思路,也让我对Python有了进一步的了解,更深入地认识到了Python相较于C的一些优点。

参考资料c

python语言程序设计实践教程答案实验二_20184313 实验二《Python程序设计》实验报告...相关推荐

  1. python语言程序设计实践教程答案实验六_Python程序设计实践教程

    书名:Python程序设计实践教程 定价:29.8 ISBN:9787115532602 作者:储岳中 薛希玲 版次:*1版 出版时间:2020-04 内容提要: 本书是Python语言程序设计的配套 ...

  2. python程序设计实践教程答案-Python程序设计实践教程

    书名:Python程序设计实践教程 定价:29.8 ISBN:9787115532602 作者:储岳中 薛希玲 版次:*1版 出版时间:2020-04 内容提要: 本书是Python语言程序设计的配套 ...

  3. python语言程序设计实践教程答案实验六_Python语言程序设计实验指导与习题--详细介绍...

    上机实践是学习程序设计的重要教学环节.只有通过上机实践,才能真正理解程序设计的基本思想,正确灵活地使用语言中的各种要素,熟练掌握各种集成开发环境的应用和编写.调试程序的方法,从而获得应用程序设计解决实 ...

  4. python语言程序设计实践教程答案实验六_20192417 实验一《Python程序设计》实验报告...

    20192417 2019-2020-2 <Python程序设计>实验1报告 课程:<Python程序设计> 班级: 1924 姓名: 张家华 学号:20192417 实验教师 ...

  5. python语言设计二级教程答案2019_全国计算机等级考试二级教程2019年版——Python语言程序设计参考答案...

    第二章 Python语言基本语法元素 一.选择题 C B B C A D B A D B 二.编程题 1.获得用户输入的一个整数N,计算并输出N的32次方. 在这里插入图片描述 2.获得用户输入的一段 ...

  6. python语言程序设计实践教程答案上海交通大学陈东_《C语言程序设计》蔺德军 主著【摘要 书评 在线阅读】-苏宁易购图书...

    商品参数 作者: 蔺德军 主著 出版社:辽宁大学出版社 出版时间:2015-11-01 ISBN:9787121274220 版权提供:辽宁大学出版社 基本信息 书名:C语言程序设计上机实验与习题解答 ...

  7. java程序设计实践教程答案潘浩主编_JAVA程序设计上机指导与习题选解

    第1章 Java编程环境 1.1 JDK的安装与配置 1.2 Java程序的编辑.编译和运行 1.3 制作JAR文件包 1.4 上机实验 习题 第2章 Java基本数据类型 2.1 Java基本数据类 ...

  8. c语言程序设计实践教程谢丽霞答案,C语言程序设计实用实践教程

    直观易懂.采用直观的方式描述概念,以结构清晰的图形文字表述抽象算法.综合全面.每章内容讲解完后,都有一个贯穿全书的实例,把学到的内容用到实际开发中,达到理论与实践的紧密结合.全书有语法.有案例.还有实 ...

  9. python语言程序设计2019版第二章课后答案-python语言程序设计基础课后答案第二章...

    python语言程序设计基础课后答案第二章 以下合法的用户自定义标识符是____________. 导入模块或者模块中的元素要使用关键字________ . 下列哪个函数是用来控制画笔的尺寸的____ ...

  10. java6程序设计实践教程_Java 6 程序设计实践教程

    本书当前实时库存为: 本 书名:Java程序设计与实践教程 ISBN:9787115360458 出版社:人民邮电出版社 作者:张勇 页数:218 出版日期:2014年09月 参考重量:0.330Kg ...

最新文章

  1. TensorRT加速 ——NVIDIA终端AI芯片加速用,可以直接利用caffe或TensorFlow生成的模型来predict(inference)...
  2. DBA(六):MHA集群
  3. 开源的.NET运行剖析器nprof简单使用指引
  4. leetcode98 验证二叉搜索树
  5. 数据结构—链表-建立单链表
  6. WPF 后台访问资源图片
  7. iOS开发之复制字符串到剪贴板
  8. 用递归将嵌套的JSON对象遍历出来,转为二维数组 或一维数组
  9. Windows下安装Tp6.0框架,图文。Thinkphp6.0安装教程
  10. linux禁止访问国外ip,Shell脚本实现防止国外ip访问服务器
  11. 动态规划——详细入门讲解
  12. Stata:面板分位数回归
  13. 让游戏沉浸感炸裂的实时3D音效技术原理与实践(上)
  14. Google文档初学者指南
  15. Unity 抛物线运动脚本(弓箭轨迹)
  16. python接入微信_使用python接入微信聊天机器人
  17. mac mysql 忘记初始root密码,重置密码
  18. c#中new的三个作用
  19. ps界面为啥突然变大了_PhotoShop这么卡未必赖电脑!几步帮你解决PS卡顿问题
  20. 软件设计模式之责任链模式实验

热门文章

  1. 易用性软件测试用例,易用性、界面测试用例
  2. 电力电子仿真软件对比分析
  3. 高德地图 API 搜索服务 搜索定位 用不了
  4. 我的世界Java版最大村庄_《我的世界》MC中最大的村庄种子,PC和PE都可以用
  5. 世界上最恐怖的格斗比赛---黑市拳赛
  6. 中文核心期刊有哪些?
  7. IT软件项目管理视频教程—软件项目管理实战教程
  8. 2022爱分析・汽车行业数字化实践报告
  9. XML文件怎么转换成Excel表格文件
  10. 云班课资源自动下载详细教程