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)
  • 相关阅读:
    JavaScript大杂烩1
    JavaScript大杂烩0
    Scrum敏捷开发沉思录
    C#的变迁史
    C#的变迁史
    C#的变迁史
    巧用浏览器F12调试器定位系统前后端bug-转载
    Jmeter如何把响应数据的结果保存到本地的一个文件
    Jmeter察看结果树的响应数据中的中文显示乱码问题处理
    Jmeter如何将上一个请求的结果作为下一个请求的参数——使用正则表达式提取器转载
  • 原文地址:https://www.cnblogs.com/python-study/p/5491361.html
Copyright © 2011-2022 走看看