20244210 2024-2025-2 《Python程序设计》实验二报告
20244210 2024-2025-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 2442
姓名: 陈可
学号:20244210
实验教师:王志强
实验日期:2024年3月18日
必修/选修: 公选课
一.实验内容
1.实验内容
设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
考核基本语法、判定语句、循环语句、逻辑运算等知识点。
二. 实验过程及结果
1.导入标准库中的math模块:开头输入import math导入必要的math库,奠定编写计算器的基础。
2.定义函数:定义calculate函数,设置a,b,operator41三个参数,其中a,b为操作数,operator41用于制定要进行的运算操作,这样设置使函数可以根据传入的运算符,对a,b进行相应的运算。
3.设置不同的运算:通过if-elif条件判断语句,为operator设置+,-,*,/,//,^,%,**,!,logab,root,sin,cos,tan,sqrt,abs,floor,ceil,neg等取值,来执行相应的运算,并在相对陌生的运算后用“#”注释写明运算名称。
4.设置循环:用变量flag控制后续的while循环。通过conti=input("是否需要继续计算?Y or N\n")来获取用户输入,并将其赋值给conti变量,根据用户的选择来决定是否将控制循环的标志变量flag设置为False。若flag=True,则循环运行,若flag=False,则停止运行。
5.选择运算类型:考虑到运算有可能是实数类型或复数类型,使用if-else条件判断语句,通过input()获取用户选择的运算类型。若用户输入为“复数”,则使用complex(input("好滴!请输入一个复数:"))和=complex(input("请输入另一个复数:"))分别获取两个复数,并赋值给a和b;若用户输入非“复数”,那么默认为实数,使用int(input("好!请输入一个数:"))和int(input("请再输入一个数:"))获取两个整数,并赋值给a和b。
6.考虑到sin,cos,tan,sqrt,abs,floor,ceil,neg等运算为单目运算,而其他为双目运算,所以再使用if-else条件判断语句,通过input()获取用户选择的是单目还是双目类型。若用户输入“单目”,则通过input("请输入单目操作(例如sin,cos,tan,sqrt,abs,floor,ceil,neg)\n")获取运算符,并调用函数以输出结果,格式为print(f"{operator41}{a}=",calculate(a,b,operator41));若用户输入非“单目”,那么默认为双目,通过input("请输入操作:+ - * / // ^ % ** ! logab root \n")获取运算符,同样调用函数输出结果,格式为print(f"{a}{operator41}{b}=",calculate(a,b,operator41))。
7.考虑到部分运算中,可能会出现一些导致运算错误的输入情况,如除数为零,赋值不满足函数定义等,使用if条件语句设置错误提示和处理机制。
8.对该计算器进行简单的装修,标明开发日期、学号、姓名等。



9.对代码进行调试。




10.运行代码。





三. 实验过程中遇到的问题和解决过程
- 问题1:想要设置sin,cos等单目运算符,但是原本所设置的运算结果print(f"{a}{operator41}{b}=",calculate(a,b,operator41))是双目运算的结果,并不适用于单目运算。
- 问题1解决方案:通过向老师求助,使用if-else条件判断语句,通过input()让用户自己选择进行单目运算还是双目运算,用户选择后,计算器将通过input("请输入单目操作(例如sin,cos,tan,sqrt,abs,floor,ceil,neg)\n")或input("请输入操作:+ - * / // ^ % ** ! logab root \n")提示相应运算符,并且用户输入具体运算符后,单、双目运算结果分别为print(f"{operator41}{a}=",calculate(a,b,operator41))和print(f"{a}{operator41}{b}=",calculate(a,b,operator41))。由此,单、双目运算就被区分开了。
- 问题2:考虑到在部分运算中,可能会出现一些输入情况不符合该运算的定义,如输入的除数为0等。
- 问题2解决方案:通过if语句,给每个对于参与运算的数有限制的运算设置了错误提示和处理机制。
四.其他(感悟、思考等)
本次设计计算器程序的实验使我受益匪浅。最开始上课跟着老师一步步敲出了一个初始版的计算器,我初步练习了定义函数并调用它、在if-else语句中通过input()让用户根据提示自己输入运算类型(实数/复数),并设置相应的提示引导用户进行下一步操作;同时,我再次练习巩固了flag控制的while语句、用complex()将数据类型转换为复数等,这对于熟悉掌握基本语法、判定语句、循环语句、逻辑运算等起到重要作用。当我完成了初始版本之后,首先想到的是再通过几个elif设计一些运算,于是我又写了sin,cos,root等,而这引发了一个新的问题————由于前面设置的是输入a,b两个参数进行运算,而sin,cos等运算只需要一个参数的参与,于是通过询问老师,我使用了if-else条件判断语句,通过input()让用户自己输入要进行单目还是双目运算,并在用户输入后进行一步步的提示,引导其完成运算。另一个新问题是,当再次浏览整个程序时,我考虑到如果出现“用户在除法运算中给除数赋值为0”等不符合运算定义的情况,该怎么办?我使用if条件语句进行了错误提示和处理机制的设置。经过以上的基本功练习与两个进一步的思考,我想自己对于学习python的兴趣又提高了不少,能够在编写代码中融入自己的理解,并不仅仅满足于完成基本功能的设置,而是想方设法将这个程序做得更完善。
五.参考资料
《Python》程序设计
浙公网安备 33010602011771号