学号 2020-2021-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 1912
姓名: 唐启恒
学号:20191218
实验教师:王志强
实验日期:2021年5月7日
必修/选修: 公选课
1.实验内容
- 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
- 考核基本语法、判定语句、循环语句、逻辑运算等知识点
2. 实验过程及结果
- 创建工程项目,使用Python语言实现具体的操作运算,并完成程序调试和运行,代码托管到码云。
为方便功能划分,我设计了简易计算器的目录
print("""
*****~欢迎使用简易计算器~*****
本计算器提供的功能
1.简单四则运算
2.简单整数取模运算
3.求一个数三角函数
4.求一个数的整数次幂
5.求一个数的阶乘
6.解一元二次方程
7.统计学数值运算
**************************
输入对应数值进行相应运算
输入-1退出程序
""")
t = 0
while t!='-1':
t = int(input("请依照所要使用的功能输入相应的数字序号:"))
if t==1:
ari()
elif t==2:
mol()
elif t==3:
act()
elif t==4:
nqo()
elif t==5:
fac()
elif t==6:
print(qua())
elif t==7:
sta()
elif t==-1:
print("~感谢您的使用,再见~")
exit(0)
else:
print("相应功能数字序号输入有误!")
print("\n是否再次计算?")
print("""
*****~欢迎使用简易计算器~*****
本计算器提供的功能
1.简单二元四则运算
2.简单整数取模运算
3.求一个数三角函数
4.求一个数的整数次方
5.求一个数的阶乘
6.解一元二次方程
7.统计学数值运算
**************************
输入对应数值进行相应运算
输入-1退出程序
""")
在完成一次计算后,输入相应数值还可以继续运算,输入-1退出程序
简单计算器小程序分为七个模块
1.简单四则运算
采用老师上课所讲向函数传入多个参数的方法,实现对多个数字的求和、作差、累乘、连除
- (1)add
def add(*para):
sum = 0.0
for num in para:
sum = sum + num
print("这些数字连续累加结果为:"+str(sum))
- (2)sub
def sub(*para):
sum = 0.0
for num in para:
sum = sum + num
print("这些数字连续作差的结果为:"+str(sum))
- (3)mul
def mul(*para):
ans = 1.0
for num in para:
ans = ans * num
print("这些数字连续累乘的结果为:"+str(ans))
- (4)div
def div(*para):
ans = para[0]
for num in para[1:]:
if num == 0: #判断除数中是否存在0
print("除数中不能出现0,错误!")
break
ans = ans / num
print("这些数字连续相除的结果为:"+str(ans))
2.简单整数取模运算
def mol():
# 取模运算
x = int(input("请输入整数被除数:"))
y = int(input("请输入整数除数:"))
while y == 0:
print("输入错误!除数不能为0!")
y = int(input("请重新输入整数除数:"))
print(x % y)
3.求一个数的三角函数
def act():
# 求简单三角函数
print("\n1.求正弦\n2.求余弦\n3.求正切\n4.求反正弦\n5.求反余弦\n6.求反正切")
temp = 0
while temp != 1 and temp != 2 and temp != 3 and temp != 4 and temp != 5 and temp != 6:
temp = int(input("请依照所要使用的功能输入相应的数字序号:"))
if temp == 1 or temp == 2 or temp == 3:
x = float(input("请以角度制输入角度:"))
x = x / 180 * math.pi
if temp == 1:
print('%.2f' %math.sin(x))
elif temp == 2:
print('%.2f' %math.cos(x))
elif temp == 3:
print('%.2f' %math.tan(x))
elif temp == 4 or temp == 5 or temp == 6:
x = float(input("请输入相应数值,答案将以角度制呈现:"))
if temp == 4:
if -1 <= x and x <= 1:
print('%.2f' % math.degrees(math.asin(x)))
else:
print("无解!")
elif temp == 5:
x = float(input("请输入相应数值(-1≤x≤1):"))
if -1 <= x and x <= 1:
print('%.2f' % math.degrees(math.acos(x)))
else:
print("无解!")
elif temp == 6:
x = float(input("请输入相应数值:"))
print('%.2f' % math.degrees(math.atan(x)))
else:
print("相应功能数字序号输入有误!")
4.求一个数的n次幂
def nqo():
# 求一个数的n次幂
a = float(input("请输入底数:"))
while a == 0:
print("输入错误!底数不能为0!")
a = int(input("请重新输入底数:"))
n = float(input("请输入指数:"))
print(math.pow(a,n))
5.求一个数的阶乘
def fac():
# 求一个数的阶乘,递归调用
n = int(input("请输入一个整数:"))
print(math.factorial(n))
6.解一元二次方程
def qua():
# 解一元二次方程
print("解一元二次方程 ax^2 + bx + c = 0")
a = float(input("请输入a:"))
b = float(input("请输入b:"))
c = float(input("请输入c:"))
d = b*b - 4*a*c
if d >= 0:
x1 = (-b+math.sqrt(d)) / (2*a)
x2 = (-b-math.sqrt(d)) / (2*a)
if d == 0:
return "有唯一的解:X = "+str(x1)
else:
return "X1 = "+str(x1)+'\t'+"X2 = "+str(x2)
else:
x1 = str(-b/(2*a)) + '+' + str(math.sqrt(-d)/(2*a)) + 'i'
x2 = str(-b/(2*a)) + '-' + str(math.sqrt(-d)/(2*a)) + 'i'
return "X1 = "+x1+'\t'+"X2 = "+x2
7.统计学数据计算
def sta():
# 统计学运算
x = int(input("输入数据个数:"))
y = []
print("请输入数据:")
for i in range(x):
tmp = [float(input())]
y += tmp
print("\n1.求和\n2.求平均值\n3.求极差\n4.求方差\n5.求标准差")
temp = 0
while temp != 1 and temp != 2 and temp != 3 and temp != 4 and temp != 5:
temp = int(input("请依照所要使用的功能输入相应的数字序号:"))
s = 0
for i in range(x):
s = s + y[i]
var = 0
for i in range(x):
var = var + (s / x - y[i]) ** 2
var = var / x
if temp == 1:
print(s)
elif temp == 2:
print(s / x)
elif temp == 3:
print(max(y) - min(y))
elif temp == 4:
print(var)
elif temp == 5:
print(math.sqrt(var))
else:
print("相应功能数字序号输入有误!")
退出程序
实验代码链接
3. 实验过程中遇到的问题和解决过程
-
问题1:无法将输入的字符串直接转换成含浮点型数据的列表
-
问题1解决方案:查找PHP网站,寻找python怎样实现列表的个性化读取(即要求通过输入字串生成指定的列表),只需要用.split()方法先将字符串进行分割生成一个含字符串类型的列表,再用列表生成器将其中每个元素转换成浮点型即可
-
问题2:无法将输入的参数进行运算,如下图
-
问题2解决方案:发现是因为在向函数传参数时漏掉了'*',加上后即可成为传任意长度的参数
-
问题3:Markdown格式下不知道如何实现超链接
-
问题3解决方案:参考Markdown教程,掌握超链接格式,以及快速插入超链接的方法
-
问题4:在官网上下载最新版本的Pycharm(2021.1)并破解后发现打开py文件会出现无法找到python解释器
-
问题4解决方案:如图,选择已安装的python所在目录即可
其他(感悟、思考等)
在简易计算器项目实践过程中,我发现要尤其注意各种细节,像传任意多参时一定不能漏掉'*',不能滥用字符串的拼接符'+',否则会出现下图所示的错误
还有许多需要注意之处我在这就不一一列举了。在完成一个python小程序尤其是代码量较大时,一定要注意好分块进行代码编写,实现面向对象编程。否则整段程序写在一起不仅不好维护,而且也不好差错纠错。