20201324 2020-2021-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 2013
姓名: 徐源
学号:20201324
实验教师:王志强
实验日期:2021年4月26日
必修/选修: 公选课
(一)实验内容
- 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
- 基本四则运算
- 取模运算
- 求幂运算
- 计算简单的三角函数
- 求阶乘
- 解一元二次方程
- 考核基本语法、判定语句、循环语句、逻辑运算等知识点
(二)实验过程及结果
思路:先分别编写代码,实现不同功能,再将这些功能代码以函数的形式组合起来
1.基本四则运算
因四则运算相对较复杂,故希望通过设计函数来实现
def arithmetic(a, b, operator):
if operator == "+":
return a + b
elif operator == "-":
return a - b
elif operator == "*":
return a * b
elif operator == "/":
return a / b
负责判断、调用和打印的主函数如下
flag = 1
while flag == 1:
operator = input("请输入你要做的运算:+,-,*,%,//,%,**,sin,cos:")
a = int(input("输入一个数a:"))
b = int(input("输入一个数b:"))
print("a" + operator + "b = ", arithmetic(a, b, operator))
flag = int(input("继续请输入1,退出请输入0"))
2.取模运算
print("请按照提示输入取模运算的两个操作数,注意两者均为整数")
x = int(input("请输入被除数:"))
y = int(input("请输入除数:"))
while y == 0:
print("输入错误!除数不能为0!")
y = int(input("请重新输入整数除数:"))
print(x % y)
3.求幂运算
a = float(input("请输入底数:"))
b = float(input("请输入指数:"))
print("a**b = ",a**b)
4.计算简单的三角函数
这里注意要把我们惯常使用的角度制转成弧度制
这一部分涉及六种三角函数,较复杂,编写函数实现
import math
def act(x):
if operator == "sin":
return math.sin(x)
elif operator == "cos":
return math.cos(x)
elif operator == "tan":
return math.tan(x)
elif operator == "asin":
return math.asin(x)
elif operator == "acos":
return math.acos(x)
elif operator == "atan":
return math.atan(x)
flag = 1
while flag == 1:
operator = input("请输入你要做的运算:sin,cos,tan,asin,acos,atan:")
x = float(input("请输入数值:"))
x = x / 180 * math.pi
print(operator + "x = ", act(x))
flag = int(input("继续请输入1,退出请输入0"))
5.求阶乘
import math
n = int(input("请输入一个整数:"))
print("n! = ",math.factorial(n))
6.解一元二次方程
def qua():
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 "X1 = X2 = "+str(x1)
else:
return "X1 = "+str(x1)+' '+"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+' '+"X2 = "+x2
将上述代码分装成不同函数,在主函数中根据用户的选择来完成调用
7.完整代码
import math
def arithmetic(a, b, operator):
if operator == "+":
return a + b
elif operator == "-":
return a - b
elif operator == "*":
return a * b
elif operator == "/":
return a / b
elif operator == "//":
return a // b
elif operator == "%":
return a % b
def act(x,operator):
if operator == "sin":
return math.sin(x)
elif operator == "cos":
return math.cos(x)
elif operator == "tan":
return math.tan(x)
elif operator == "asin":
return math.asin(x)
elif operator == "acos":
return math.acos(x)
elif operator == "atan":
return math.atan(x)
def operation1():
print("现在进行 1.基本四则运算")
operator = input("请输入你要做的运算:+,-,*,/,//,%:")
a = int(input("输入一个数a:"))
b = int(input("输入一个数b:"))
print("a" + operator + "b = ", arithmetic(a, b, operator))
def operation2():
print("现在进行 2.取模运算")
print("请按照提示输入取模运算的两个操作数,注意两者均为整数")
x = int(input("请输入被除数:"))
y = int(input("请输入除数:"))
while y == 0:
print("输入错误!除数不能为0!")
y = int(input("请重新输入整数除数:"))
print(x % y)
def operation3():
print("现在进行 3.求幂运算")
a = float(input("请输入底数:"))
b = float(input("请输入指数:"))
print("a**b = ", a ** b)
def operation4():
print("现在进行 4.计算简单的三角函数")
operator = input("请输入你要做的运算:sin,cos,tan,asin,acos,atan:")
x = float(input("请输入数值:"))
x = x / 180 * math.pi
print(operator + "x = ", act(x,operator))
def operation5():
print("现在进行 5.求阶乘")
n = int(input("请输入一个整数:"))
print(n,"! = ", math.factorial(n))
def operation6():
print("现在进行 6.解一元二次方程")
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:
print("X1 = X2 = "+str(x1))
else:
print("X1 = "+str(x1)+' '+"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'
print("X1 = "+x1+' '+"X2 = "+x2)
flag = 1
while flag == 1:
print("欢迎使用计算器!")
print("*" * 20)
print("本计算器提供的功能有:")
print("1.基本四则运算")
print("2.取模运算")
print("3.求幂运算")
print("4.计算简单的三角函数")
print("5.求阶乘")
print("6.解一元二次方程")
print("如您想退出使用,请输入-1")
print("*" * 20)
t = int(input("请从中选择您想要实现的功能,输入对应的数字"))
if t == 1:
operation1()
elif t==2:
operation2()
elif t==3:
operation3()
elif t==4:
operation4()
elif t==5:
operation5()
elif t==6:
operation6()
flag = int(input("继续请输入1,退出请输入-1"))
运行结果
(三)实验过程中遇到的问题和解决过程
- 问题1:对使用python函数不熟练,def NAME后面经常不加":",对于系统给出的报错信息不敏锐
- 问题1解决方案:多写多总结,与c语言对比,总结差异
- 问题2:在分别编写每一个功能代码时,有的直接写成函数形式,有return 标志的返回值;有的因较为简单,没有采用函数形式,采用的是print;最后将各部分汇总时很不方便,需要逐一排查
- 问题2解决方案:这次因为都已写好,难以修改,只能逐一运行测试。以后编写时应尽量统一,我习惯在编写每个部分时不写成函数形式,而在最终整合时统一改成函数形式,这样比较方便统计需要传哪些参数
(四) 其他(感悟、思考等)
python和c还是经常在语法上搞混,但经过一段时间的学习,在一些二者的常见不同上已有了一定的敏锐性。本次实验最大障碍是对python中的函数调用掌握不足,什么时候return,什么时候直接在函数中打印有点迷糊。接下来一定继续努力,掌握透彻
(五)参考资料
(六)码云链接
https://gitee.com/xu-yuan-20201324/python_use/blob/main/calculator.py