• 20183411 李丞灏 2019-2020《Python程序设计》实验二 报告


    20183411 李丞灏 2019-2020《Python程序设计》实验二 计算器设计 报告

    课程:《Python程序设计》
    班级: 1834
    姓名: 李丞灏
    学号:20183411
    实验教师:王志强老师
    实验日期:2020年4月16日
    必修/选修: 公选课

    1.实验内容

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

    2. 实验过程及结果

    本次实验需要设计计算器,我设计的计算器可以实现普通的加减乘除混合运算、求解一元一次方程、求余
    和计算圆面积及周长的运算并通过while语句进行计算的循环。并且可以按需要保留相应的位数。

    导入math模块后用户将想要计算的表达式输入即可计算混合运算

    • 代码如下:*
    import re
    import math
    def add(c,v):
        d = [0]
        f = 0
        for k in range(0, len(c)):
            if (c[k] == '-' or c[k] == '+'):
                f += 1
                if (c[k] == '-'):
                    d.append(f)
        w = re.split('[+-]', c)
        for item in w:
            if (item.find('*') != -1):
                y = w.index(item)
                t = item.split('*')
                n = 1
                for i in t:
                    if (i.find('/') != -1):
                        q = t.index(i)
                        p = i.split('/')
                        h = 1
                        for bo in p:
                            h *= float(bo)
                            u = (float(p[0]) * float(p[0])) / h
                        t[q] = u
                for i in t:
                    n *= float(i)
                w[y] = str(n)
        for item in w:
            if (item.find('/') != -1):
                Q = w.index(item)
                P = item.split('/')
                H = 1
                for Bo in P:
                    H *= float(Bo)
                    U = (float(P[0]) * float(P[0])) / H
                w[Q] = U
            else:
                continue
        m = 0
        r = 0
        for item in w:
            m += float(item)
        for fi in d:
            r += float(w[fi])
        m = m - 2 * r + 2 * float(w[d[0]])
        M = round(m,v)
        return M
    def mod(A1,B1):
        y = A1%B1
        return y
    def equation(a2,b2,c2):
        y = (c2 - b2)/c2
        return y
    def rou(r,v):
        c = math.pi*r*2
        C = round(c,v)
        return C
    def area(r,v):
        s = math.pi*r**2
        S = round(s, v)
        return S
    A = -1
    while (A != 0):
        A = int(input("欢迎使用至简计算器!
    请输入您想要实现的功能:
    1.普通计算  2.求余运算  3.计算一元一次方程"
                      "  4.计算圆面积和周长  0.退出""
    "))
        if (A == 1):
            c = str(input("请输入计算式:
    "))
            v = int(input("请输入您想要保留的位数:
    "))
            print(c + '=' + str(add(c, v)))
            print("
    ")
        elif (A == 2):
            print("A mod B
    ")
            A1 = int(input("请输入 A:
    "))
            B1 = int(input("请输入 B:
    "))
            print(str(A1)+' '+'mod'+' '+str(B1)+' '+'='+' '+str(mod(A1,B1)))
            print("
    ")
        elif (A == 3):
            print("ax + b = c
    ")
            a2 = float(input("请输入 a:
    "))
            b2 = float(input("请输入 b:
    "))
            c2 = float(input("请输入 c:
    "))
            print(str(a2)+'x'+' '+'+'+' '+str(b2)+' '+'='+' '+str(equation(a2,b2,c2)))
            print("
    ")
        elif (A == 4):
            r = float(input("请输入半径:
    "))
            v = int(input("请输入您想要保留的位数:
    "))
            print("该圆的周长为:",rou(r,v))
            print("该圆的面积为:",area(r,v))
            print("
    ")
    

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

    问题:无法解决混合运算及先乘除、后加减的运算规则
    解决方案:使用分隔符将输入的字符串进行分割,将两侧的数字按照对应的运算方式计算,并优先计算乘除部分。

    其他(感悟、思考等)

    *** 人生苦短,我用Python!!! ***

    参考资料

    蓝墨云班课

  • 相关阅读:
    使用 ServiceStack 构建跨平台 Web 服务
    .NET的微型Web框架 Nancy
    orcale复制表结构及其数据
    利用PL/SQL Developer工具导出数据到excel,导入excel数据到表
    PLSQL导入/导出数据方法
    基于Quqrtz.NET 做的任务调度管理工具
    Web监听器导图详解(转)
    GIT分支管理是一门艺术(转)
    我需要完全理解这部分代码才能确保它能够正常工作,如果由我来修复代码中的问题,我是不会这么写的,因此希望你也不要这么来写(转)
    不要学习代码,要学会思考(转)
  • 原文地址:https://www.cnblogs.com/Lch36/p/12711386.html
Copyright © 2020-2023  润新知