zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    [转载]pda 和pc 之间的文件操作(利用Microsoft ActiveSync同步文件数据)
    获取XML文件中内容大小
    听猪的“旅行的意义”有感
    If a file is locked, you can wait until the lock times out to redeploy, or s
    七个顶级的心理寓言(转载)
    html table 上下左右边框
    判断浏览器动态加载CSS等内容
    课程表
    input文本框、文字、按钮、图片 垂直居中对齐
    JUnit3
  • 原文地址:https://www.cnblogs.com/python-study/p/5491361.html
Copyright © 2011-2022 走看看