20202216 邓童丹 2020-2021-2 《Python程序设计》实验二报告
20202216 邓童丹 2020-2021-2 《Python程序设计》实验二报告
实验二 计算器设计
- 课程:《Python程序设计》
- 班级: 2022
- 姓名: 邓童丹
- 学号:20202216
- 实验教师:王志强
- 实验日期:2021年4月26日
- 必修/选修: 公选课
(一). 实验内容
- 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
- 考核基本语法、判定语句、循环语句、逻辑运算等知识点
(二). 实验过程及结果
创建工程项目,使用Python语言实现具体的操作运算,并完成程序调试和运行,代码托管到码云。
- 通过上课时老师的讲解和课后在网上知识查找,我设计的计算器实现了以下几个功能
- 求两数的加(+),减(-),乘(*),除(/),整除(//),取余(mod),幂乘(**),用python自带的基本运算符即可实现
代码如下:
a = int(input("please a:"))
b = int(input("please b:"))
if oper == "+":
print("a" + oper + "b= ", func1(a, b, oper))
elif oper == "-":
print("a" + oper + "b= ", func1(a, b, oper))
elif oper == "*":
print("a" + oper + "b= ", func1(a, b, oper))
elif oper == "/":
if b == 0:
print("b输入错误!")
else:
print("a" + oper + "b= ", func1(a, b, oper))
elif oper == "//":
if b == 0:
print("b输入错误!")
else:
print("a" + oper + "b= ", func1(a, b, oper))
elif oper == "%":
if b == 0:
print("b输入错误!")
else:
print("a" + oper + "b= ", func1(a, b, oper))
elif oper == "**":
print("a" + oper + "b= ", func1(a, b, oper))
函数部分:
def func1(a, b, oper):
if oper == "+":
return a + b
elif oper == "-":
return a - b
elif oper == "*":
return a * b
elif oper == "/":
return a / b
elif oper == "//":
return a // b
elif oper == "%":
return a % b
else:
return a ** b
运行结果如下:
2. 判断两数的大小并输出最大最小值,用if语句实现
elif oper == "max":
print("a" + oper + "b= ", max(a, b))
elif oper == "min":
print("a" + oper + "b= ", min(a, b))
函数部分:
def max(a, b):
if a > b:
return a
else:
return b
def min(a, b):
if a < b:
return a
else:
return b
- 求由a累加到b的结果,可用for循环语句实现
def func2(a, b):
sum1 = 0
for item in range(a, b + 1):
sum1 = sum1 + item
return sum1
- 求阶乘和组合数,用递归函数实现
elif oper == "!":
print("a!=", func3(a))
print("b!=", func3(b))
elif oper == "C":
x = func3(a)
z = func3(b)
if a > b:
y = func3(a - b)
print("C(b,a)=",x / (y * z))
else:
y = func3(b - a)
print("C(b,a)=", z / (y * x))
函数部分:
def func3(n):
if n <= 1:
return 1
else:
return n * func3(n - 1)
运行结果如下:
- 求三角函数的sin,cos,可调用python自带的matn库函数实现,并可以先将输入的角度转化为弧度再计算
elif oper == "sin":
print("sin(a)=", math.sin(a*math.pi/180))
print("sin(b)=", math.sin(b*math.pi/180))
elif oper == "cos":
print("cos(a)=", math.cos(a*math.pi/180))
print("cos(b)=", math.cos(b*math.pi/180))
运行结果如下:
- 求多数连加和连乘,将列表里的值传入函数中实现,其中连加可以用python自带的sum函数
if oper == "++++" or oper == "****":
x = input("输入一些数吧,记得用“,”隔开")
list1 = x.split(",")
list1 = [int(list1[i]) for i in range(len(list1))]
if oper == "++++":
print("多数求和:", sum(list1))
elif oper == "****":
print("多数连乘:", func4(*list1))
函数部分:
def func4(*para):
sum1 = 1
for item in para:
sum1 = sum1 * item
return sum1
运行结果如下:
应老师要求将完整代码托管到码云上
我的码云链接
(三). 实验过程中遇到的问题和解决过程
- 问题1:不会用sum函数求连加的和
- 问题1解决方案:通过网上查找资料,学会了sum函数使用的正确格式
- 问题2:一开始使用错了逻辑运算符,导致判断失败
- 问题2解决方案:看书,纠正了自己的错误
- 问题3:不会在makedown中插入代码段
- 问题3解决方案:网上查找资料
- 问题4:不会如何将多个数传入函数中
- 问题4解决方案:通过老师上课时的讲解和网上资料,知道要使用列表
其他(感悟、思考等)
在这次实验中,我学会了如何用python函数来减少重复冗长的代码,调用了python自带的函数进行计算,如何将多个数输入列表里并将列表传入函数中。
在此实验里还有一些不够完善的地方需要改进,而这需要我继续学习python丰富的知识。
参考资料
Markdown 编辑器 代码添加行数
python求和函数sum()详解
Python 递归
Python split()方法详解:分割字符串