20242103 实验二《Python程序设计》实验报告
学号 2024-2025-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 2103
姓名: 李雨虓
学号:20242103
实验教师:王志强
实验日期:2025年3月26日
必修/选修: 公选课
1.实验内容
(1)设计并编写一个计算器程序,实现基本运算功能;
功能包括加、减、乘、除、取余、乘方、对数、三角函数,按位与、按位或、按位异或、按位取反、左移、右移;
模式包括实数运算模式、虚数运算模式、位运算模式。
(2)编写一个四则随机运算程序
(3)熟悉基本语法、判定语句、循环语句、逻辑运算等知识点
(4)代码上传Gitee
2. 实验过程及结果
编写了一个功能较为完善的计算器程序,加强了对if语句、while语句、函数运用、条件控制的运用和理解




代码import math
print("""
我要疯掉啦,非常好哦,还是有点实力的
小小牌计算器()
作者:李雨虓 日期:2025/3/26
""")
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
if y == 0:
return "被除数不能为零"
return x / y
def power(x, y):
return x ** y
def square_root(x):
if x < 0:
return "被开方数应大于等于0"
return math.sqrt(x)
def sin(x):
return math.sin(math.radians(x))
def cos(x):
return math.cos(math.radians(x))
def tan(x):
if math.cos(math.radians(x)) == 0:
return "tan(x)无意义"
return math.tan(math.radians(x))
def log(x):
if x <= 0:
return "真数应该大于0"
return math.log10(x)
def complex_add(x, y):
return x + y
def complex_subtract(x, y):
return x - y
def complex_multiply(x, y):
return x * y
def complex_divide(x, y):
if y == 0:
return "被除数不能为0"
return x / y
def display_menu():
print("科学计算器菜单:")
print("1. 加法")
print("2. 减法")
print("3. 乘法")
print("4. 除法")
print("5. 幂运算")
print("6. 平方根")
print("7. 正弦")
print("8. 余弦")
print("9. 正切")
print("10. 常用对数")
print("11. 复数加法")
print("12. 复数减法")
print("13. 复数乘法")
print("14. 复数除法")
print("0. 退出")
while True:
display_menu()
choice = input("请输入你的选择 (0-14): ")
if choice == '0':
break
if choice in ('1', '2', '3', '4', '5'):
num1 = float(input("请输入第一个数字: "))
num2 = float(input("请输入第二个数字: "))
if choice == '1':
print(num1, "+", num2, "=", add(num1, num2))
elif choice == '2':
print(num1, "-", num2, "=", subtract(num1, num2))
elif choice == '3':
print(num1, "", num2, "=", multiply(num1, num2))
elif choice == '4':
print(num1, "/", num2, "=", divide(num1, num2))
elif choice == '5':
print(num1, "**", num2, "=", power(num1, num2))
elif choice in ('6', '7', '8', '9', '10'):
num = float(input("请输入一个数字: "))
if choice == '6':
print("√", num, "=", square_root(num))
elif choice == '7':
print("sin(", num, ") =", sin(num))
elif choice == '8':
print("cos(", num, ") =", cos(num))
elif choice == '9':
print("tan(", num, ") =", tan(num))
elif choice == '10':
print("log(", num, ") =", log(num))
elif choice in ('11', '12', '13', '14'):
real1 = float(input("请输入第一个复数的实部: "))
imag1 = float(input("请输入第一个复数的虚部: "))
num1 = complex(real1, imag1)
real2 = float(input("请输入第二个复数的实部: "))
imag2 = float(input("请输入第二个复数的虚部: "))
num2 = complex(real2, imag2)
if choice == '11':
print(num1, "+", num2, "=", complex_add(num1, num2))
elif choice == '12':
print(num1, "-", num2, "=", complex_subtract(num1, num2))
elif choice == '13':
print(num1, "", num2, "=", complex_multiply(num1, num2))
elif choice == '14':
print(num1, "/", num2, "=", complex_divide(num1, num2))
else:
print("无效的选择,请重新输入。")
运行:

将代码上传至码云
3. 实验过程中遇到的问题和解决过程
- 问题1:在编四则运算程序时不清楚怎么随机运算符
- 问题1解决方案:通过询问AI给出question = f"{num1} {operator} {num2}"形式的用法以达预期效果,明白了随机运算符的巧妙用法
- 问题2:运行时无法进行对数运算
- 问题2解决方案:经过电脑报错加上AI的检查,发现忘记添加math的头文件
- 问题3:复数不会使用
- 问题3解决方案:通过询问AI,上网查询,知道可以使用complex将input得到的字符串转换为复数,然后直接参加运算
其他(感悟、思考等)
- 接触到了py的函数,和C一样能让主函数变得更加简洁
- 让我学习到了关于math库的一些常见函数的使用,也了解到了复数complex数据形式的应用,同时也综合运用了实验一以及先前课程中所讲的知识点,如条件语句,数组等
浙公网安备 33010602011771号