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表格

掃碼關注微信公眾號,了解更多


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM