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

学号 2020-2021-2 《Python程序设计》实验二报告

课程:《Python程序设计》
班级: 1912
姓名: 唐启恒
学号:20191218
实验教师:王志强
实验日期:2021年5月7日
必修/选修: 公选课

1.实验内容

  • 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
  • 考核基本语法、判定语句、循环语句、逻辑运算等知识点

2. 实验过程及结果

  • 创建工程项目,使用Python语言实现具体的操作运算,并完成程序调试和运行,代码托管到码云。

为方便功能划分,我设计了简易计算器的目录

print("""
    *****~欢迎使用简易计算器~*****
          本计算器提供的功能     
          1.简单四则运算      
          2.简单整数取模运算     
          3.求一个数三角函数      
          4.求一个数的整数次幂    
          5.求一个数的阶乘      
          6.解一元二次方程      
          7.统计学数值运算    
    **************************
        输入对应数值进行相应运算      
           输入-1退出程序
""")
t = 0

while t!='-1':
    t = int(input("请依照所要使用的功能输入相应的数字序号:"))
    if t==1:
        ari()
    elif t==2:
        mol()
    elif t==3:
        act()
    elif t==4:
        nqo()
    elif t==5:
        fac()
    elif t==6:
        print(qua())
    elif t==7:
        sta()
    elif t==-1:
        print("~感谢您的使用,再见~")
        exit(0)
    else:
        print("相应功能数字序号输入有误!")

    print("\n是否再次计算?")
    print("""
        *****~欢迎使用简易计算器~*****
              本计算器提供的功能     
              1.简单二元四则运算      
              2.简单整数取模运算     
              3.求一个数三角函数      
              4.求一个数的整数次方     
              5.求一个数的阶乘      
              6.解一元二次方程      
              7.统计学数值运算    
        **************************
            输入对应数值进行相应运算      
               输入-1退出程序
    """)

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

在完成一次计算后,输入相应数值还可以继续运算,输入-1退出程序
20191218 实验二《Python程序设计》实验报告

简单计算器小程序分为七个模块

1.简单四则运算

采用老师上课所讲向函数传入多个参数的方法,实现对多个数字的求和、作差、累乘、连除

  • (1)add
def add(*para):
    sum = 0.0
    for num in para:
        sum = sum + num
    print("这些数字连续累加结果为:"+str(sum))

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

  • (2)sub
def sub(*para):
    sum = 0.0
    for num in para:
        sum = sum + num
    print("这些数字连续作差的结果为:"+str(sum))

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

  • (3)mul
def mul(*para):
    ans = 1.0
    for num in para:
        ans = ans * num
    print("这些数字连续累乘的结果为:"+str(ans))

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

  • (4)div
def div(*para):
    ans = para[0]
    for num in para[1:]:
        if num == 0: #判断除数中是否存在0
            print("除数中不能出现0,错误!")
            break
        ans = ans / num
    print("这些数字连续相除的结果为:"+str(ans))

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

2.简单整数取模运算

def mol():
    # 取模运算
    x = int(input("请输入整数被除数:"))
    y = int(input("请输入整数除数:"))
    while y == 0:
        print("输入错误!除数不能为0!")
        y = int(input("请重新输入整数除数:"))
    print(x % y)

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

3.求一个数的三角函数

def act():
    # 求简单三角函数
    print("\n1.求正弦\n2.求余弦\n3.求正切\n4.求反正弦\n5.求反余弦\n6.求反正切")
    temp = 0
    while temp != 1 and temp != 2 and temp != 3 and temp != 4 and temp != 5 and temp != 6:
        temp = int(input("请依照所要使用的功能输入相应的数字序号:"))
        if temp == 1 or temp == 2 or temp == 3:
            x = float(input("请以角度制输入角度:"))
            x = x / 180 * math.pi
            if temp == 1:
                print('%.2f' %math.sin(x))
            elif temp == 2:
                print('%.2f' %math.cos(x))
            elif temp == 3:
                print('%.2f' %math.tan(x))
        elif temp == 4 or temp == 5 or temp == 6:
            x = float(input("请输入相应数值,答案将以角度制呈现:"))
            if temp == 4:
                if -1 <= x and x <= 1:
                    print('%.2f' % math.degrees(math.asin(x)))
                else:
                    print("无解!")
            elif temp == 5:
                x = float(input("请输入相应数值(-1≤x≤1):"))
                if -1 <= x and x <= 1:
                    print('%.2f' % math.degrees(math.acos(x)))
                else:
                    print("无解!")
            elif temp == 6:
                x = float(input("请输入相应数值:"))
                print('%.2f' % math.degrees(math.atan(x)))
        else:
            print("相应功能数字序号输入有误!")

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

4.求一个数的n次幂

def nqo():
    # 求一个数的n次幂
    a = float(input("请输入底数:"))
    while a == 0:
        print("输入错误!底数不能为0!")
        a = int(input("请重新输入底数:"))
    n = float(input("请输入指数:"))
    print(math.pow(a,n))

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

5.求一个数的阶乘

def fac():
    # 求一个数的阶乘,递归调用
    n = int(input("请输入一个整数:"))
    print(math.factorial(n))

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

6.解一元二次方程

def qua():
    # 解一元二次方程
    print("解一元二次方程 ax^2 + bx + c = 0")
    a = float(input("请输入a:"))
    b = float(input("请输入b:"))
    c = float(input("请输入c:"))
    d = b*b - 4*a*c
    if d >= 0:
        x1 = (-b+math.sqrt(d)) / (2*a)
        x2 = (-b-math.sqrt(d)) / (2*a)
        if d == 0:
            return "有唯一的解:X = "+str(x1)
        else:
            return "X1 = "+str(x1)+'\t'+"X2 = "+str(x2)
    else:
        x1 = str(-b/(2*a)) + '+' + str(math.sqrt(-d)/(2*a)) + 'i'
        x2 = str(-b/(2*a)) + '-' + str(math.sqrt(-d)/(2*a)) + 'i'
        return "X1 = "+x1+'\t'+"X2 = "+x2

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

7.统计学数据计算

def sta():
    # 统计学运算
    x = int(input("输入数据个数:"))
    y = []
    print("请输入数据:")
    for i in range(x):
        tmp = [float(input())]
        y += tmp
    print("\n1.求和\n2.求平均值\n3.求极差\n4.求方差\n5.求标准差")
    temp = 0
    while temp != 1 and temp != 2 and temp != 3 and temp != 4 and temp != 5:
        temp = int(input("请依照所要使用的功能输入相应的数字序号:"))
        s = 0
        for i in range(x):
            s = s + y[i]
        var = 0
        for i in range(x):
            var = var + (s / x - y[i]) ** 2
        var = var / x
        if temp == 1:
            print(s)
        elif temp == 2:
            print(s / x)
        elif temp == 3:
            print(max(y) - min(y))
        elif temp == 4:
            print(var)
        elif temp == 5:
            print(math.sqrt(var))
        else:
            print("相应功能数字序号输入有误!")

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

退出程序

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

实验代码链接

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

  • 问题1:无法将输入的字符串直接转换成含浮点型数据的列表
    20191218 实验二《Python程序设计》实验报告

  • 问题1解决方案:查找PHP网站,寻找python怎样实现列表的个性化读取(即要求通过输入字串生成指定的列表),只需要用.split()方法先将字符串进行分割生成一个含字符串类型的列表,再用列表生成器将其中每个元素转换成浮点型即可

  • 问题2:无法将输入的参数进行运算,如下图
    20191218 实验二《Python程序设计》实验报告

  • 问题2解决方案:发现是因为在向函数传参数时漏掉了'*',加上后即可成为传任意长度的参数

  • 问题3:Markdown格式下不知道如何实现超链接

  • 问题3解决方案:参考Markdown教程,掌握超链接格式,以及快速插入超链接的方法

  • 问题4:在官网上下载最新版本的Pycharm(2021.1)并破解后发现打开py文件会出现无法找到python解释器

  • 问题4解决方案:如图,选择已安装的python所在目录即可
    20191218 实验二《Python程序设计》实验报告

其他(感悟、思考等)

在简易计算器项目实践过程中,我发现要尤其注意各种细节,像传任意多参时一定不能漏掉'*',不能滥用字符串的拼接符'+',否则会出现下图所示的错误
20191218 实验二《Python程序设计》实验报告
还有许多需要注意之处我在这就不一一列举了。在完成一个python小程序尤其是代码量较大时,一定要注意好分块进行代码编写,实现面向对象编程。否则整段程序写在一起不仅不好维护,而且也不好差错纠错。

参考资料

上一篇:31. 栈的压入、弹出序列


下一篇:C#中的值类型与引用类型