20213305 实验二《Python程序设计》实验报告
# 20213305 2021-2022-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 2133
姓名: 张桉源
学号:20213305
实验教师:王志强
实验日期:2022年4月5日
必修/选修: 公选课
##1.实验内容
·应用上课学到的python的基本运算,条件判断,逻辑语句,循环语句等编写BESTI计算器,功能多多益善。
·在加减乘除的基础上增三角函数,复数,进制之间的运算。
·将代码上传到Gitee
##2.实验过程及结果
--------------------------------------------------------代码-------------------------------------------------------------
import math #调用数学库
print("BESTI科学计算器")
flag=True
while flag==True:
choice=input("请选择你要计算的类型(1表示实数类型;2表示虚数类型;3表示实数加虚数类型):\n")
if choice=="1":
print("如果你选用sin、cos、tan函数or进制,请将b值设定为1\n")
print("如果选用与、或、非电路,a和b的值在0 or 1之间选择,且非电路的b值为1\n")
op=input("请输入需要做的操作(+、-、*、/、%、a的b次方根、sin、cos、tan、十转二进制、十转八进制、十转十六进制、与、或、非、输入0代表退出):")
if op=="0":
break
else:
a=int(input("请输入第一个实数a\n"))
b=int(input("请输入第二个实数b\n"))
elif choice=="2":
op=input("请输入需要做的操作(+、-、输入0代表退出):")
if op=="0":
break
else:
a=complex(input("请输入第一个虚数a\n"))
b=complex(input("请输入第一个虚数b\n"))
elif choice=="3":
op=input("请输入需要做的操作(+、-、输入0代表退出):")
if op=="0":
break
else:
a=int(input("请输入第一个实数a\n"))
b=complex(input("请输入第一个虚数b\n"))
if op=="+":
result=a+b
elif op=="-":
result=a-b
elif op=="*":
result=a*b
elif op=="/":
result=a/b
elif op=="%":
result=a%b
elif op=="a的b次方根":
result=pow(a,b)
print(str(a)+"的"+str(b)+"次方根"+"=",result,"\n")
continue
elif op=="sin":
result=math.sin(a*3.1415927/180)
print("sin"+str(a)+"=",result,"\n")
continue
elif op=="cos":
result=math.cos(a*3.1415927/180)
print("cos"+str(a)+"=",result,"\n")
continue
elif op=="tan":
result=math.tan(a*3.1415927/180)
print("tan"+str(a)+"=",result,"\n")
continue
elif op=="十转二进制":
result=bin(a)
print(str(a)+"的二进制"+"=",result,"\n")
continue
elif op=="十转八进制":
result=oct(a)
print(str(a)+"的八进制"+"=",result,"\n")
continue
elif op=="十转十六进制":
result=hex(a)
print(str(a)+"的十六进制"+"=",result,"\n")
continue
elif op=="与":
if a==b:
result=a
print(str(a)+"和"+str(b)+"的与电路"+"=",result,"\n")
else:
result=0
print(str(a)+"和"+str(b)+"的与电路"+"=",result,"\n")
continue
elif op=="或":
if a==b:
result=a
print(str(a)+"和"+str(b)+"的或电路"+"=",result,"\n")
else:
result=1
print(str(a)+"和"+str(b)+"的或电路"+"=",result,"\n")
continue
elif op=="非":
if a==1:
result=0
print(str(a)+"的非电路"+"=",result,"\n")
else:
result=1
print(str(a)+"的非电路"+"=",result,"\n")
continue
else:
print("输入有误,请重新输入\n")
continue
print(str(a)+op+str(b)+ "=",result,"\n")
-----------------------------------------------------------结果----------------------------------------------------------------
同时将代码上传到Gitee:
##3.实验过程中遇到的问题和解决过程
-问题一:最开始设计的计算器不够优化,尤其是计算复数的实部和虚部,分别计算比较麻烦
-问题一解决方案:可将实部与虚部同时输入。
-问题二:python的三角函数只能识别弧度,如果输入角度则出现错误。
-问题二解决方案:利用数学知识,弧度=(角度/180)*3.1415926.
-问题三:由于计算器代码行数比较多,找出错误需要很久。
-问题三解决方案:再次感受到了断点调试的优势,可节约大量时间。
##感悟,思考
虽然在老师的带领下设计了BESTI计算器,但是不太完美的一点是我并不会设计交互性的页面,以后可以学习相关知识,继续完善BESTI计算器。