学号 2024-2025-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 2434
姓名: 谢子凌
学号:20243402
实验教师:王志强老师
实验日期:2025年3月26日
必修/选修: 公选课
1.实验内容
设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
考核基本语法、判定语句、循环语句、逻辑运算等知识点
2. 实验过程及结果
一.编写计算器
1.具有初步功能的计算器(加减乘除)
部分代码截图
运行结果
2.升级计算器(可实现求余、乘方、对数、三角函数运算)
部分代码截图
运行结果
总代码:
import math
def cjia(num1,num2):
return num1+num2
def cjian(num1,num2):
return num1-num2
def ccheng(num1,num2):
return num1*num2
def cchu(num1,num2):
if num2==0:
print("除数不能为0")
return 0
return num1/num2
def cduishu(num1,num2):
return math.log(num1,num2)
def cchengfang(num1,num2):
return num1**num2
def cqiuyu(num1,num2):
return num1%num2
def csanjiao(sanjiao,num):
if sanjiao == "sin":
num = math.radians(num)
print("num的sin值为", format(math.sin(num),'.2f'))
elif sanjiao == "cos":
num = math.radians(num)
print("num的sin值为", format(math.cos(num),'.2f'))
flag =True
while flag:
yunsuan=input("请问:需要复数(1)吗,还是整数(2)运算,还是三角(3)运算?\n")
if yunsuan"1":
num1=complex(input("请输入一个数:"))
num2=complex(input("请输入另一个数:"))
choice = input("请输入运算符(+ - * / log ** %)")
if choice == "+":
print("num1", choice, "num2=", cjia(num1, num2))
elif choice == "-":
print("num1", choice, "num2=", cjian(num1, num2))
elif choice == "*":
print("num1", choice, "num2=", ccheng(num1, num2))
elif choice == "/":
print("num1", choice, "num2=", cchu(num1, num2))
elif choice == "log":
print("log以", num1, "为底,", num2,"的对数=",cduishu(num1, num2))
elif choice == "%":
print("num1", choice, "num2=", cqiuyu(num1, num2))
elif choice == "**":
print("num1的", choice, "num2次方=", cchengfang(num1, num2))
conti = input("是否继续?Y/N")
if conti == "Y" or conti == "y":
flag = True
else:
flag = False
elif yunsuan"2":
num1= int(input("请输入一个数:"))
num2=int(input("请输入另一个数:"))
choice = input("请输入运算符(+ - * / log ** %)")
if choice"+":
print("num1",choice,"num2=",cjia(num1,num2))
elif choice == "-":
print("num1", choice, "num2=", cjian(num1, num2))
elif choice"":
print("num1",choice,"num2=",ccheng(num1,num2))
elif choice"/":
print("num1",choice,"num2=",cchu(num1,num2))
elif choice == "log":
print("log以", num1, "为底,", num2,"的对数=",cduishu(num1, num2))
elif choice == "%":
print("num1", choice, "num2=", cqiuyu(num1, num2))
elif choice == "**":
print("num1的num2次方=", cchengfang(num1, num2))
conti=input("是否继续?Y/N")
if conti == "Y" or conti "y" :
flag=True
else:
flag=False
elif yunsuan=="3":
sanjiao = input("请输入运算种类:")
num = float(input("请输入角度值:"))
csanjiao(sanjiao,num)
conti = input("是否继续?Y/N")
if conti == "Y" or conti == "y":
flag = True
else:
flag = False
二.编写随机题目生成器
代码截图
运行结果
总代码
import math
import random
count1=0
def cjia(num1,num2):
print(num1, "+", num2, "=")
if int(input()) == num1 + num2:
print("对了")
count1+=1
else:
print("错了,菜就多练")
def cjian(num1,num2):
print(num1, "-", num2, "=")
if int(input()) == num1 - num2:
print("对了")
count1 += 1
else:
print("错了,菜就多练")
def ccheng(num1,num2):
print(num1, "", num2, "=")
if int(input()) == num1 * num2:
print("对了")
count1 += 1
else:
print("错了,菜就多练")
def cchu(num1,num2):
print(num1, "/", num2, "=")
if int(input()) == num1 / num2:
print("对了")
count1 += 1
else:
print("错了,菜就多练")
count=int(input("请输入你要练的题数:"))
count2=count
while count:
suiji=random.randint(1,4)
num1=random.randint(1,100)
num2=random.randint(1,100)
if suiji1:
cjia(num1,num2)
elif suiji2:
cjian(num1,num2)
elif suiji3:
ccheng(num1,num2)
elif suiji4:
cchu(num1,num2)
count-=1
print("你总共练习了",count2,"道题,对了",count1,"道题")
三.上传码云
计算器:
https://gitee.com/xie-ziling/purple-lingering/blob/master/计算器.py
随机题目生成器:
https://gitee.com/xie-ziling/purple-lingering/blob/master/随机题目生成器.py
3. 实验过程中遇到的问题和解决过程
- 问题1:不知道乘方运算符号
- 问题1解决方案:询问ai,Python 提供了内置的幂运算符 **,可以直接用来计算 x 的 n 次方。
示例:
def power(x, n):
return x ** n - 问题2:三角函数不知道角度和弧度如何转化,以及如何保留规定的小数位
- 问题2解决方案:询问ai和同学,使用math.radians(num)即可完成转化,但是由于除不尽会产生细微误差。通过format函数保留规定小数位数format(math.cos(num),'.2f')
其他(感悟、思考等)
初学python,多进行相关编程。经过这两个程序的编程,我感觉自己对python编程的熟练度大大提高,语法掌握更加深刻。但是仍然存在代码过于冗长,没有优化的情况,今后学习需要着重注意这方面的改进。