20193223 2020-2021-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 2019
姓名: 张中怀
学号:20193223
实验教师:王志强
实验日期:2021年5月8日
必修/选修: 公选课
1.实验内容
设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
本次计算器包含内容:基本加减乘除四则运算,取余,取商,幂运算,三角函数运算,并在运算完成后询问是否继续。
2. 实验过程及结果
-
基本四则运算
def add(a,b,operator):#加,减法 if operator == "2": return a-b elif operator == "1": return a+b def mul(a,b): #乘法 return a*b def div(a,b): #除法 if b==0: print("Error!") else: return a/b
-
求余,求商,幂运算
def mod(a,b): #求余 return a % b def power(a,b): #幂运算 return a**b def rem(a,b): #求商 if b==0: print("Error!") else: return a//b
-
三角函数
number = int(input("1.sinx 2.cosx 3.tanx\n")) # 三角函数种类算术 c = float(input("请输入一个值(角度):\n")) d = math.radians(c) if number == 1: answer = round(math.sin(d),2) elif number == 2: answer = round(math.cos(d),2) elif number == 3: answer = round(math.tan(d),2) else: answer = "错误,请重新输入" print("答案为:", answer)
-
阶乘
n = int(input("请输入一个整数:")) print(n, "! = ", math.factorial(n))
-
完整代码
import math def add(a,b,operator):#加,减法 if operator == "2": return a-b elif operator == "1": return a+b def mul(a,b): #乘法 return a*b def div(a,b): #除法 if b==0: print("Error!") else: return a/b def mod(a,b): #求余 return a % b def power(a,b): #幂运算 return a**b def rem(a,b): #求商 if b==0: print("Error!") else: return a//b flag =1 while flag == 1: operator = input("请输入:(1:加法,2:减法,3:乘法,4:除法,5:求余,6:求商,7:幂运算,8:三角函数,9:阶乘)\n") if '1'<=operator<='7': a = int(input("请输入一个数a:")) b = int(input("请输入一个数b:")) if operator == "1": print("a"+ '+' + "b = " ,add(a,b,operator)) elif operator == "2": print("a" + '-' + "b = ",add(a,b,operator)) elif operator == "3": print("a" + '*' + "b = ", mul(a,b)) elif operator == '4': print("a" + '/' + "b = ", div(a,b)) elif operator == "5": print("a" + '%' + "b = ", mod(a,b)) elif operator == "6": print("a" + '//' + "b = ", rem(a,b)) elif operator == "7": print("a" + '**' + "b = ", power(a,b)) flag = int(input("继续(1)or退出(0)")) elif operator == '8': number = int(input("1.sinx 2.cosx 3.tanx\n")) # 三角函数种类算术 c = float(input("请输入一个值(角度):\n")) d = math.radians(c) if number == 1: answer = round(math.sin(d),2) elif number == 2: answer = round(math.cos(d),2) elif number == 3: answer = round(math.tan(d),2) else: answer = "错误,请重新输入" print("答案为:", answer) elif operator == '9': n = int(input("请输入一个整数:")) print(n, "! = ", math.factorial(n)) flag = int(input("继续(1)or退出(0)"))
-
运行结果
3. 实验过程中遇到的问题和解决过程
问题1:三角函数如何从角度转换为弧度时。
解决措施:1.利用math函数库中的radians(x): 把x从角度转换为弧度。
2.利用公式: d = (c * (math.pi)/ 180.0)(c:输入的角度)
问题2:实际计算中,如sin(raidians(30)),得出的不是0.5,而是0.4999。
解决措施:用round函数四舍五入一下即可。
问题3:计算阶乘用以前的方法过于复杂。
解决措施:利用math函数库中专门计算阶乘的math.factorial(n))。
4.其他(感悟、思考等)
本次实验的设计思路是,通过def进行各运算的设计,然后主函数实现输入,输出。其功能可以实现基本运算,并进行继续或退出的判断。
改进之处:可以通过qt进行界面的设计,让其完成UI界面的设计。
5.参考资料
无
6.码云链接
https://gitee.com/zhang-zhonghuai/python_20193223.git