20242113 实验二《Python程序设计》实验报告
20242113 2024-2025-2 《Python程序设计》实验二报告
课程:《Python程序设计》
班级: 2421
姓名: 陈铂翔
学号:20242113
实验教师:王志强
实验日期:2025年3月26日
必修/选修: 公选课
1.实验内容
(1)设计并完成一个计算器程序,完成了复数四则运算和实数加、减、乘、除、平方、开方、三角函数、lg等运算。
(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("无效的选择,请重新输入。")
达到预期效果

接着完成随机四则运算程序的实现,同时复习了之前random的相关知识点
import random
print("""
*******************************************
这是一个悲伤的随机四则运算小孩哥用程序
作者:独之 陈 日期:2025/3/26
*******************************************
""")
def generate_question():
num1 = random.randint(1, 100)
num2 = random.randint(1, 100)
operators = ['+', '-', '*', '/']
operator = random.choice(operators)
question = f"{num1} {operator} {num2}"
if operator == '+':
answer = num1 + num2
elif operator == '-':
answer = num1 - num2
elif operator == '*':
answer = num1 * num2
else:
answer = round(num1 / num2, 2)
return question, answer
num_questions = 5
correct_count = 0
for i in range(num_questions):
question, answer = generate_question()
user_answer = input(f"问题 {i + 1}: {question} = ")
try:
user_answer = float(user_answer)
if user_answer == answer:
print("回答正确!")
correct_count += 1
else:
print(f"回答错误,正确答案是 {answer}。")
except ValueError:
print("输入无效,请输入一个数字。")
print(f"你一共回答了 {num_questions} 个问题,答对了 {correct_count} 个。")
达到预期结果

最后将两个代码上传至码云

3. 实验过程中遇到的问题和解决过程
- 问题1:如何实现lg和复数的运算?
- 问题1解决方案:通过查找资料(CSDN)知道了math库中对应的log函数和complex数据形式
- 问题2:在编四则运算程序时不清楚怎么随机运算符
- 问题2解决方案:通过询问AI给出question = f"{num1} {operator} {num2}"形式的用法以达预期效果
其他(感悟、思考等)
(1)本次实验不仅让我学习到了关于math库的一些常见函数的使用,也了解到了复数complex数据形式的应用,同时也综合运用了实验一以及先前课程中所讲的知识点,如条件语句,数组等
(2)要学会合理利用资料与资源,如上CSDN查找大佬分享的报错纠正、程序优化、算法优化,询问AI精确解决当下的矛盾点等
浙公网安备 33010602011771号