# 20212309 2021-2022-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 2123
姓名: 沈烨
学号:20212309
实验教师:王志强
实验日期:2022年3月31日
必修/选修: 公选课
## 1.实验内容
设计一个计算器,设计要求满足以下功能:实现浮点数加减乘除运算;
使用上一次运算结果进行下一步运算;
无法识别输入内容时不报错。
## 2. 实验过程及结果
第一版:实现了浮点数加减乘除运算,输入0结束运算。
问题:不能使用上一次运算结果进行下一步运算,输入不符合要求会报错。
第二版:实现了使用上一次运算结果进行下一步运算。
问题:输入不符合要求依然会报错。
第三版:实现全部要求功能。
第四版:加入注释。
问题:加入注释后无法实现使用上一次运算结果进行下一步运算。
第五版:在使用上一次运算结果进行下一步运算的模块前加入numin1.remove(''),解决问题。
## 3. 实验过程中遇到的问题和解决过程
- 问题1:如何识别形如“2+15”字符串中的运算符“+”?
- 问题1解决方案:使用老师上课刚讲的list.split()方法,使用两次,将list.split()与list.split(“+”)的结果比对,若不相同则输入字符串中含有“+”
- 问题2:如何区分“12+2”与“+2”,以使用上一次运算结果进行运算?
- 问题2解决方案:使用try-except语句和num1=float(numin1[1])语句中若不含有第1个元素则报错的特性,区分二者。
- 问题3:如何实现输入不符合要求时不报错?
- 问题3解决方案:再次使用try-except语句,若输入不符合要求则list.split()与list.split(“+”)、list.split(“-”)、list.split(“*”)、list.split(“/”)的结果相同,此时人为引入错误x=0/0进入except语句,弹出重新输入提示避免报错。同时将list.split(“+”)改为list.split(“+”,1),以避免将形如“1+1+1”的字符串认为是符合要求的字符串。
## 其他(感悟、思考等)
在思考如何辨认运算符时苦恼了很久,老师讲的list.split方法很好地启发了我。这个方法虽然不够简便直接,但是很多时候只要能实现功能,曲线救国也未尝不可。
同时,我在程序中运用了多次try-except语句。有某个熟练的语句时,不妨多用用。再者,在第三版中其实已经实现了全部预想功能,但加入注释后出现问题,调试后发现对“+1”字符串使用list.split('+')的结果是["',"1"],不明白原因,但是总算还是解决了问题。
## 参考资料
- [《Java程序设计与数据结构教程(第二版)》](https://book.douban.com/subject/26851579/)
- [《Java程序设计与数据结构教程(第二版)》学习指导](http://www.cnblogs.com/rocedu/p/5182332.ht