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精确解决当下的矛盾点等

参考资料

py计算器实现
py随机四则运算实现

posted @ 2025-03-26 23:12  陈独之  阅读(37)  评论(0)    收藏  举报