zoukankan      html  css  js  c++  java
  • Python 简单实现数学四则运算

    GitHub地址:https://github.com/compassblog/PythonExercise

    一、题目描述

    (1)能自动生成小学四则运算题目;

    (2)能支持真分数的四则运算;

    二、实现环境

    PyCharm、Python3.0

    三、代码实现

    import re
    
    def myCalculate(mystr):
        if (mystr.__contains__("(")):
            start = mystr.rindex("(")
            lstr = mystr[0:start]
            tmpstr = mystr[start + 1:]
            end = tmpstr.index(")")
            rstr = tmpstr[end + 1:]
            nowstr = tmpstr[0:end]
            newstr = lstr + str(myCalculate(nowstr)) + rstr
            return myCalculate(newstr)
        else:
            return calcNoSym(mystr)
    
    
    def calcNoSym(string):
        if (string.__contains__("*")):
            string = getNewStr(string, "*")
            return calcNoSym(string)
        if (string.__contains__("/")):
            string = getNewStr(string, "/")
            return calcNoSym(string)
        if (string.__contains__("+")):
            string = getNewStr(string, "+")
            return calcNoSym(string)
        if (string.__contains__("-")):
            string = getNewStr(string, "-")
            return calcNoSym(string)
        return string
    
    
    def getNewStr(string, op):
        start = string.index(op)
        lstr = string[0:start]
        rstr = string[start + 1:]
        lnum = re.search('d+$', lstr).group()
        rnum = re.search('d+', rstr).group()
        newstr = lstr.rstrip(lnum) + str(calcs(lnum, rnum, op)) + rstr.lstrip(rnum)
        return newstr
    
    
    def calcs(num1, num2, op):
        if (op == "+"):
            return int(num1) + int(num2)
        elif (op == "-"):
            return int(num1) - int(num2)
        elif (op == "*"):
            return int(num1) * int(num2)
        elif (op == "/"):
            return int(num1) / int(num2)
        else:
            raise "error"
    
    
    string = "11*22*3/4"
    
    print(myCalculate(string))
    sexp = "512+((112+212)*2-312)"
    print(myCalculate(sexp))

    四、结果测试

    1、加法测试

    2、减法测试

    3、乘法测试

    4、除法测试

    五、PSP表格

    扫码关注微信公众号,了解更多

  • 相关阅读:
    iOS中的NSTimer 和 Android 中的Timer
    正则表达式中*的使用小注意
    NSUrlConnection 和 NSUrlRequest 的关系
    iOS 中的第三方库管理工具
    Android 向Application对象添加Activity监听
    Android dp px转化公式
    Android 返回桌面的Intent
    Spring+SpringMVC+Hibernate小案例(实现Spring对Hibernate的事务管理)
    Equinox OSGi应用嵌入Jersey框架搭建REST服务
    在OSGI容器Equinox中嵌入HttpServer
  • 原文地址:https://www.cnblogs.com/compassblog/p/8883413.html
Copyright © 2011-2022 走看看