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

    在完成一次计算后,输入相应数值还可以继续运算,输入-1退出程序

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

    1.简单四则运算

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

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

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

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

    • (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))
    

    2.简单整数取模运算

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

    3.求一个数的三角函数

    def act():
        # 求简单三角函数
        print("
    1.求正弦
    2.求余弦
    3.求正切
    4.求反正弦
    5.求反余弦
    6.求反正切")
        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("相应功能数字序号输入有误!")
    

    4.求一个数的n次幂

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

    5.求一个数的阶乘

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

    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)+'	'+"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+'	'+"X2 = "+x2
    

    7.统计学数据计算

    def sta():
        # 统计学运算
        x = int(input("输入数据个数:"))
        y = []
        print("请输入数据:")
        for i in range(x):
            tmp = [float(input())]
            y += tmp
        print("
    1.求和
    2.求平均值
    3.求极差
    4.求方差
    5.求标准差")
        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("相应功能数字序号输入有误!")
    

    退出程序

    实验代码链接

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

    • 问题1:无法将输入的字符串直接转换成含浮点型数据的列表

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

    • 问题2:无法将输入的参数进行运算,如下图

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

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

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

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

    • 问题4解决方案:如图,选择已安装的python所在目录即可

    其他(感悟、思考等)

    在简易计算器项目实践过程中,我发现要尤其注意各种细节,像传任意多参时一定不能漏掉'*',不能滥用字符串的拼接符'+',否则会出现下图所示的错误

    还有许多需要注意之处我在这就不一一列举了。在完成一个python小程序尤其是代码量较大时,一定要注意好分块进行代码编写,实现面向对象编程。否则整段程序写在一起不仅不好维护,而且也不好差错纠错。

    参考资料

  • 相关阅读:
    JS中document对象和window对象有什么区别
    jQuery parent.append和$after的区别
    使用CFURLCreateStringByAddingPercentEscapes进行URL编码
    JQuery中==与===、$("#")与$("")的区别
    理解JavaScript中的arguments,callee,caller,apply
    使用自己的ClassLoader实现热替换
    TextBox 英文文档
    easyui的textbox和validatebox的 赋值区别
    jquery的$.extend、$.fn.extend、 jQuery.extend( target, object1, [objectN])作用及区别
    jQuery 遍历
  • 原文地址:https://www.cnblogs.com/20191218tangqiheng/p/14743032.html
Copyright © 2011-2022 走看看