• Python计算不带括号的字符串


    __author__ = 'Alex'
    # -*- coding:UTF-8 -*-
    import re
    import string
    str = "-10+30-20*11+40*21/5-100+70-2*13+14"
    data_list=[]
    sym_list=[]
    
    data_list = re.findall('d+',str)
    sym_list = re.findall('D+',str)
    
    # print (data_list)
    # print (sym_list)
    
    def add (a1,a2,opr):
        if opr == '+':
            flag = False
            return a1+a2
    def sub (a1,a2,opr):
        if opr == '-':
            flag = False
            return a1-a2
    def mul(a1,a2,opr):
        if opr == '*':
            flag = True
            return a1*a2
    def div(a1,a2,opr):
        if opr == '/':
            flag = True
            return a1/a2
    if sym_list[0] == '-':
        data_list[0] = '-%s'%(data_list[0])
        sym_list.remove(sym_list[0])
    print (data_list)
    print (sym_list)
    while sym_list.count('*') != 0 or sym_list.count('/') != 0:
        for i in range(len(sym_list)):
            if sym_list[i] == '*':
                val = mul(float(data_list[i]),float(data_list[i+1]),'*')
                data_list.remove(data_list[i])
                data_list.remove(data_list[i])
                data_list.insert(i,val)
                sym_list.remove(sym_list[i])
                break
            if sym_list[i] == '/':
                val = div(float(data_list[i]),float(data_list[i+1]),'/')
                data_list.remove(data_list[i])
                data_list.remove(data_list[i])
                data_list.insert(i,val)
                sym_list.remove(sym_list[i])
                break
    print (data_list)
    print (sym_list)
    
    while len(sym_list)>0:
        for i in range(len(sym_list)):
            if sym_list[i] == '+':
                val = add(float(data_list[i]),float(data_list[i+1]),'+')
                data_list.remove(data_list[i])
                data_list.remove(data_list[i])
                data_list.insert(i,val)
                sym_list.remove(sym_list[i])
                break
            if sym_list[i] == '-':
                val = sub(float(data_list[i]),float(data_list[i+1]),'-')
                data_list.remove(data_list[i])
                data_list.remove(data_list[i])
                data_list.insert(i,val)
                sym_list.remove(sym_list[i])
                break
    print (data_list)
    print (sym_list)
  • 相关阅读:
    asp.net HC框架
    Jenkins之构建触发器配置(转载)
    Mac系统
    Macaca命令行
    Appnium学习日记四(Calculator示例)
    Appnium学习日记三(安装Android模拟器)
    Appnium学习日记二(安装Android开发环境)
    Appnium学习日记一(下载安装Appnium)
    Jmeter的安装
    WCF返回JSON的详细配置
  • 原文地址:https://www.cnblogs.com/python-study/p/5491361.html
Copyright © 2020-2023  润新知