20242321 实验二 《Python程序设计》实验报告
20242321 2024-2025-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级:2423
姓名:汤泽鹏
实验教师:王志强
实验日期:2025年3月26日
必修/选修:公选课
一、实验内容
- 设计并完成一个计算器的应用程序,包含基础的整数的加减乘除模运算,同时还要能完成如浮点数、复数的运算以及开方、指数、对数、上三角函数运算等等
- 设计一个小学生算数生成器,要求能够根据要求出题并判断对错
- 代码托管到码云
二、实验过程及结果
(一)计算器设计如下:
1.设计思路:
(1)首先计算器需要完成整数的+-*/mod等运算,随后再加入log、pow、sqrt、sin、cos、tan运算,最后引入浮点数和复数运算
(2)因为有的运算不兼容,且为了简化输入,本程序先让用户选择运算形式再进行数字输入
(3)调用对应函数进行运算输出
2.代码如下:
# 作者:20242321汤泽鹏
# 地点:电科院
# 时间:4 a.m
# 代理地址:Los Angels
import math
def Csum(num1, num2):
return num1 + num2
def Csub(num1, num2):
return num1 - num2
def Cmulti(num1, num2):
return num1 * num2
def CDiv(num1, num2):
if num2 == 0:
print("除数不能为0")
return 0
return num1 / num2
def logab(a,b):
return math.log(a,b)
def powab(a,b):
return math.pow(a,b)
def sqrta(a):
return math.sqrt(a)
def sina(a):
return math.sin(a)
def cosa(a):
return math.cos(a)
def tana(a):
return math.tan(a)
print(''' 计算器程序
# -------------------------------
# 免责声明:
# 1. 本计算器软件仅供个人使用,开发者对软件使用中的任何损失、故障或不准确性不承担责任。
# 2. 在使用本软件时,请务必核对计算结果,开发者不保证任何由使用本软件而产生的决策准确性。
# 3. 本软件不适用于用于医疗、财务、法律等专业领域,用户应根据专业人士的建议作出决策。
# 版权声明:
# 本软件版权归[走于暗巷]所有,未经授权禁止复制、修改、分发本软件的任何部分。
# -------------------------------
# 开始计算器程序
'''
)
flag = True
while flag:
choice = input("请输入运算符(+-*/ log pow sqrt sin cos tan):")
choice0 = input("复数运算输入(1),整数运算输入(2),浮点数运算输入(3)\n")
if choice0 == "1":
num1 = complex(input("请输入一个数:"))
if choice not in ['sqrt','sin','cos','tan']:
num2 = complex(input("请输入另一个数:"))
elif choice0 == "2":
num1 = int(input("请输入一个数:"))
if choice not in ['sqrt','sin','cos','tan']:
num2 = int(input("请输入另一个数:"))
elif choice0 == "3":
num1 = float(input("请输入一个数"))
if choice not in ['sqrt','sin','cos','tan']:
num2 = float(input("请输入另一个数"))
if choice == "+":
print("num1 ",choice, " num2 = ", Csum(num1, num2))
elif choice == "-":
print("num1 ",choice, " num2 = ", Csub(num1, num2))
elif choice == "*":
print("num1 ",choice, " num2 = ", Cmulti(num1, num2))
elif choice == "/":
print("num1 ",choice, " num2 = ", CDiv(num1, num2))
elif choice == "log":
print("log以",num2,"为底",num1, "的对数 = ", logab(num1, num2))
elif choice == "pow":
print("num1 ",choice, " num2 = ", powab(num1, num2))
elif choice == "sqrt":
print(choice,"num1 ""= ", sqrta(num1))
elif choice == "sin":
print(choice,"num1 ""= ", sina(num1))
elif choice == "cos":
print(choice,"num1 ""=", cosa(num1))
elif choice == "tan":
print(choice,"num1 ""=", tana(num1))
conti = input("是否继续?Y/n\n")
if conti in ["Y","y"]:
flag = True
else:
flag = False
print("感谢使用本计算器,再见!")
3.实验过程截图:
(1)整数运算:

(2)浮点数运算:

(3)复数运算:

(二)小学生算数生成器
1.设计思路:
(1)考虑到是小学生做,就只用整数的基础功能了
(2)但是还需要添加一些元素,比如积分措施或者一次性生成n道题这样的
2.代码实现:
# 作者:20242321汤泽鹏
# 地点:电科院
# 时间:4 a.m
# 代理地址:Los Angels
import random
print(''' 计算生成器程序
# -------------------------------
# 免责声明:
# 1. 本计算生成器软件仅供个人使用,开发者对软件使用中的任何损失、故障或不准确性不承担责任。
# 2. 在使用本软件时,请务必核对计算结果,开发者不保证任何由使用本软件而产生的决策准确性。
# 3. 本软件不适用于用于医疗、财务、法律等专业领域,用户应根据专业人士的建议作出决策。
# 版权声明:
# 本软件版权归[走于暗巷]所有,未经授权禁止复制、修改、分发本软件的任何部分。
# -------------------------------
# 开始计算生成器程序
'''
)
print('''欢迎来到计算世界
除法题四舍五入保留1位小数''')
sco = 0
cho0 = int(input('你想做几道题?'))
for i in range(0,cho0):
op = random.randint(1,4)
a = random.randint(1,100)
b = random.randint(1,100)
if op == 1:
ans = int(input(f"{a} + {b} = ?"))
if ans == (a+b):
print('你答对了!')
sco+=1
else:
print('你答错了。')
elif op == 2:
ans = int(input(f"{a} - {b} = ?"))
if ans == (a-b):
print('你答对了!')
sco+=1
else:
print('你答错了。')
elif op == 3:
ans = int(input(f"{a} * {b} = ?"))
if ans == (a*b):
print('你答对了!')
sco+=1
else:
print('你答错了。')
elif op == 4:
ans = float(input(f"{a} / {b} = ?"))
if (ans-(a/b))<=0.1 and (ans-(a/b))>=-0.1:
print('你答对了!')
sco+=1
else:
print('你答错了。')
print(f'''你答对了{sco}道题,欢迎下次再来''')
3.实验截图

(三)将代码托管到码云上
实验二 · 55a4598 · 走于暗巷/pythonhomework - Gitee.com
三、实验中的问题
-
问题一:我在做计算器1.0版本调试时发现如果先输数字会使某些单目运算变得复杂,不方便
问题一解决过程:调整输入顺序,先输入运算形式,再输入数字
-
问题二:我认为在这个程序中代码还是太冗长了,很有C语言的味道
问题二解决过程:我向deepseek询问了有没有更简洁的写法,得知可以用字典来简化代码形式,但是本次实验重点不在于字典,所以我没有加到实验中

浙公网安备 33010602011771号