设为首页 加入收藏

TOP

用Python写一个一次性计算出加减乘除的运算小程序
2023-07-25 21:28:57 】 浏览:41
Tags:Python 计算出 加减乘 程序

0x1 前言

跟上一个购物车一样的玩法,也都挺简单的,看标题意思就懂了,不做多介绍了

0x2 加减乘除的运算小程序

import re # 处理字符串中的符号
def sign_exp(strvar): strvar = strvar.replace("+-","-") strvar = strvar.replace("--","+") strvar = strvar.replace("-+","-") strvar = strvar.replace("++","+") return strvar # 计算表达式
def calc_exp(strvar): if "*" in strvar: a,b = strvar.split("*") return float(a) * float(b) if "/" in strvar: a,b = strvar.split("/") return float(a) / float(b) # 一次性把括号里面所有内容全部计算完毕
def opreate_exp(strvar): # 先计算乘除
    while True: obj = re.search("\d+(\.\d+)?[*/][+-]?\d+(\.\d+)?",strvar) if obj : res1 = obj.group() print(res1) # 5*-2 3/2
            # 用calc_exp进行计算最后的结果
            res2 = calc_exp(res1) print(res2) # -10.0 1.5
            strvar = strvar.replace(res1,str(res2)) print(strvar) else: break
        
    # 处理表达式当中的符号
    strvar = sign_exp(strvar) print(strvar) # 在计算加减
    lst = re.findall("[+-]?\d+(?:\.\d+)?",strvar) print(lst) # 得到最后的值返回
    total = 0 for i in lst: total += float(i) print(total) # 30.0
    return total def remove_bracket(strvar): while True: obj = re.search(r"\([^()]+\)",strvar) print(obj) if obj: res1 = obj.group() print(res1) # (40+5*-2+3/2)
            # 计算表达式里面的值
            res2 = opreate_exp(res1) print(res2) # 31.5
            # 把原来的括号替换掉
            strvar = strvar.replace(res1,str(res2)) # print(strvar) # -30+31.5*8 + (4-7)
        else: return strvar def main(strvar): # 0.把所有的空格去掉 
    strvar = strvar.replace(" ","") # 1.去除小括号
    strvar = remove_bracket(strvar) # 2.计算表达式
    # print(strvar) # -30+31.5*8+-3.0
    return opreate_exp(strvar) # strvar = "-30+(40+5*-2+3/2)*8 + (4-7)"
strvar = '1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))' res = main(strvar) print(res)# 2776672.6952380957

print(eva l(strvar))

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python操作Excel(openpyxl) 下一篇Python unittest+ddt+openpyxl+co..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目