zoukankan      html  css  js  c++  java
  • day21 计算器作业

     1 import re
     2 
     3 express = '1 - 2 * ( ( 6 0 -3 0  +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'
     4 # 去掉所有的空格
     5 # 找括号,先找括号里面没有括号的最里面的括号
     6 # 先算括号里的乘除,再算括号里的加减
     7 
     8 # 计算表达式
     9 def dealwith(express):
    10     if    "+-" in express:express.replace("+-","-")
    11     if    "+-" in express:express.replace("--","+")
    12     return express
    13 
    14 def cal_exp_son(exp_son):
    15     # 只用来计算原子型表达式,最小的表达式
    16     if    "/" in exp_son:
    17         a,b = exp_son.split("/")
    18         return str(float(a)/float(b))
    19     if    "*" in exp_son:
    20         a,b = exp_son.split("*")
    21         return str(float(a) * float(b))
    22 
    23 def cal_express_no_bracket(exp):
    24     # 计算没有括号的表达式
    25     # exp 为未经过处理的最内层的带括号的表达式
    26     exp = exp.strip("()")
    27     print(exp)
    28     # 先乘除,后加减
    29     while True:
    30         ret = re.search("d+.?d*[*/]-?d+.?d*",exp)
    31         if    ret :
    32             exp_son = ret.group()
    33             ret = cal_exp_son(exp_son)
    34             exp = exp.replace(exp_son,ret)
    35 
    36 # 将空格去除
    37 new_express = re.sub(" ","",express)
    38 
    39 #提取括号里面没有其他括号的的表达式
    40 while True:
    41     ret = re.search("([^()]+)",new_express)
    42     if    ret :
    43         express_no_bracket = ret.group()
    44         ret = cal_express_no_bracket(express_no_bracket)
    45         new_express= new_express.replace(express_no_bracket,ret)
    46         print(new_express)
    47         new_express = dealwith(new_express)
    48         print(new_express)
    49     else:
    50         print("表达式已经没有括号了",new_express)
    51         break

  • 相关阅读:
    08-30 作业整理
    JS题目整理
    08-20作业整理
    CSS3知识总结
    CSS样式表知识总结
    html标签知识总结
    Dice (III) 概率dp
    Island of Survival 概率
    How far away ?
    Hdu 2874 Connections between cities
  • 原文地址:https://www.cnblogs.com/shijieli/p/9714600.html
Copyright © 2011-2022 走看看