20242309实验二《Python程序设计》实验报告

2024239 2024-2025-2 《Python程序设计》实验2报告

课程:《Python程序设计》
班级: 2423
姓名: 邱贤达
学号:20242309
实验教师:王志强
实验日期:2025年3月26日
必修/选修: 公选课

1.实验内容

(1)设计并完成一个完整的应用程序,以完成加减乘除模等运算。
(2)设计一个小学生算术题生成器
(3)将代码上传到gitee

2. 实验过程及结果

(1)设计并完成一个完整的应用程序,以完成加减乘除模等运算

  1. 题目分析
    经过分析,本程序具有以下功能:
    a.可以做如下8种运算:1.幂运算 2.取余运算 3.开方运算 4.阶乘运算 5.绝对值运算 6.正弦运算 7.余弦运算 8.四则运算
    b.针对阶乘、平方根,判断是否有输入负数——增强程序健壮性
    c.四则运算可进行复数运算

  2. 根据以上设计,代码设计如下:


'''
@File    :   实验2.py
@Time    :   2025/03/27 20:50:04
@Author  :   _unknown
@Version :   1.0
@Desc    :   一个高级又弱智的计算器
'''


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 mi(a,b):
    return a**b
def mod(a,b):
    return a%b
def sqrt(num):
    return math.sqrt(num)
def factorial(num):
    return math.factorial(num)
def absolute(num):
    return abs(num)
def sin(num):
    return math.sin(num)    
def cos(num):
    return math.cos(num)
def tan(num):
    return math.tan(num)
flag = True
while flag:
    print("请输入需要进行的运算序号:1.幂运算 2.取余运算 3.开方运算 4.阶乘运算 5.绝对值运算 6.正弦运算 7.余弦运算 8.四则运算")
    choice1 = input()
    if choice1 == "8":
        choice = input("请输入运算符(+-*/):")
        if input("请问:需要复数(1)还是整数(2)运算?\n")=="1":
            num1 = complex(input("请输入一个数:"))
            num2 = complex(input("请输入另一个数:"))
        else:
            num1 = int(input("请输入一个数:"))
            num2 = int(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 choice1 == "1":
        num1 = int(input("请输入一个底数:"))
        num2 = int(input("请输入一个指数:"))
        print(num1,"的",num2,"次方 = ", mi(num1, num2))
    elif choice1 == "2":
        num1 = int(input("请输入一个数:"))
        num2 = int(input("请输入一个模数:"))
        print(num1,"mod",num2," = ", mod(num1, num2))
    elif choice1 == "3":
        num1 = int(input("请输入一个数:"))
        if num1 < 0:
            print("负数没有实数平方根")
            continue
        print(num1, "的平方根 = ", sqrt(num1))
    elif choice1 == "4":
        num1 = int(input("请输入一个数:"))
        if num1 < 0:
            print("负数没有阶乘")
            continue
        print(num1, "的阶乘 = ", factorial(num1))
    elif choice1 == "5":
        num1 = int(input("请输入一个数:"))
        print(num1, "的绝对值 = ", absolute(num1))
    elif choice1 == "6":
        num1 = float(input("请输入一个数:"))
        print("sin(",num1,") = ", sin(num1))
    elif choice1 == "7":
        num1 = float(input("请输入一个数:"))
        print("cos(",num1,") = ", cos(num1))
    elif choice1 == "8":
        num1 = float(input("请输入一个数:"))
        print("tan(",num1,") = ", tan(num1))
    else:
        print("输入错误")
    
    conti = input("是否继续?Y/N\n")
    if conti == "Y" or conti == "y":
        flag = True
    else:
        flag = False

  1. 实验结果

如下图所示


(2)设计一个小学生算术题生成器

  • 题目分析

    经过分析,本程序具有以下功能:

    a.可以生成加减乘除四种运算

    b.小学生可以选择生成数值的范围

    c.答题结束后可以看到自己的成绩

  • 根据以上设计,代码设计如下:

'''
@File    :   出题机.py
@Time    :   2025/03/27 21:42:03
@Author  :   _unknown
@Version :   1.0
@Desc    :   适合小学二年级学生的四则运算出题机
'''


import random

def get_a_question(x):
    num1 = random.randint(1,x)
    num2 = random.randint(1,x)
    op = random.choice("+-*/")
    if op == "+":
        res = num1 + num2
    elif op == "-":
        res = num1 - num2
    elif op == "*": 
        res = num1 * num2
    else:
        res = num1 / num2
    print(num1, op, num2, "= ?")
    ans = float(input())
    if op == "/":
        res = int(res * 10)
        ans = int(ans * 10)
    ans = int(ans)
    if ans == res:
        print("您做对啦+1分")
        return 1
    else:
        print("您做错啦 不加分")
        return 0

flag = True
score = 0
maxn = int(input("您想做多少以内的四则运算题?"))
print("请开始答题(注意除法保留一位小数(四舍五也舍))")
while flag == 1:
    score += get_a_question(maxn)
    flag = int(input("您是否需要继续答题?(1/0)"))
print("您的得分是:", score)
    
    
  1. 实验结果

如下图所示

(3)将代码上传到gitee

魏智/Python程序设计课 - Gitee.com

3. 实验过程中遇到的问题和解决过程

  • 问题1:出题机除法运算难以判断相等
  • 问题1解决方案:仅保留一位小数,*10后转化成整数比较
  • 问题2:单目运算输入两个数感觉很碍事,不人性化
  • 问题2解决方案:改变选择顺序,先选择需要进行哪种运算,再读入需要运算的数

其他(感悟、思考等)

感悟:

  • python的代码比c语言简单很多,特别是省去了一大堆int定义

  • 实践中学习往往能取得更好的效果,比如巩固了random.choice这个函数,之前有印象,但单纯的记住无法掌握,只有运用后才能深刻理解。

参考资料

posted @ 2025-03-27 21:59  未知,  阅读(65)  评论(0)    收藏  举报