zoukankan      html  css  js  c++  java
  • 计算器 随机红包

    def atom_cal(exp):
        if "*"in exp:
            a, b = exp.split("*")
            return str(float(a)*float(b))
        elif "/" in exp:
            a, b = exp.split("/")
            return str(float(a)/float(b))
    def mul_div(exp):  # 先匹配乘除
        while True:
            ret = re.search("d+[/*]-?d+", exp)
            if ret:
                chengchu = ret.group()  # 1*-22
                res = atom_cal(chengchu)
                exp = exp.replace(chengchu, res)
            else:return exp
    def func(exp):
        exp = exp.replace("--","+")
        exp = exp.replace('+-','-')
        exp = exp.replace('-+','-')
        exp = exp.replace('++','+')
        return exp
    def add_sub(exp):
        ret = re.findall('[+-]?d+(?:.d+)?', exp)
        s_um = 0
        for i in ret:
            s_um+=float(i)
        return s_um
    def main(exp):
        exp = mul_div(exp)
        exp = func(exp)
        print(exp)
        exp = add_sub(exp)
        print(exp)
    main('2-1*-22-3-4/-5')
    import re
    def atom_cal(exp):# 计算乘除的函数
        if '*' in exp:
            a,b = exp.split('*')
            return str(float(a) * float(b))
        elif '/' in exp:
            a, b = exp.split('/')
            return str(float(a) / float(b))
    
    def format_exp(exp):
        exp = exp.replace('--','+')
        exp = exp.replace('+-','-')
        exp = exp.replace('-+','-')
        exp = exp.replace('++','+')
        return exp
    
    def mul_div(exp):
        while True:
            ret = re.search('d+(.d+)?[*/]-?d+(.d+)?', exp) # 匹配括号里的乘除
            if ret:#如果匹配到乘除的话
                atom_exp = ret.group()#拿到匹配的结果
                res = atom_cal(atom_exp)# 执行计算乘除的函数,并且拿到返回值
                exp = exp.replace(atom_exp,res)#将拿到的计算结果替换以前得
            else:return exp# 匹配完以后返回结果
    def add_sub(exp):
        ret = re.findall('[+-]?d+(?:.d+)?', exp)# 匹配到有加减的内容,这里需要用取消分组操作
        exp_sum = 0
        for i in ret:
            exp_sum += float(i)
        return exp_sum
    
    def cal(exp):
        exp = mul_div(exp)# 执行乘除函数
        exp = format_exp(exp)# 拿到计算 完乘除的结果,转换成小数
        exp_sum = add_sub(exp)# 将计算完乘除的结果传递到匹配加减的函数中,并且拿到匹配的内容
        return exp_sum   # float
    
    def main(exp):# 1
        exp = exp.replace(' ','')# 2去除空格
        while True:# 因为需要不断拿括号里的内容
            ret = re.search('([^()]+)', exp)# 匹配到最内层括号
            if ret :# 如果匹配到结果
                inner_bracket = ret.group()#拿到匹配内容
                res = str(cal(inner_bracket))#执行cal()函数  并且拿到计算加减的结果
                exp = exp.replace(inner_bracket, res)# 然后将计算的结果替换掉匹配掉以前得结果
                exp = format_exp(exp) # 处理加减号
            else:break # 匹配不到就结束
        return cal(exp)
    s = '1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'
    ret = main(s)
    print(ret, type(ret))
    

     

    随机红包 
    import random def red_packet(money,nub): money = money * 100 ret = random.sample(range(1, money), nub-1) ret.sort() ret.insert(0, 0) ret.append(money) print(ret) for i in range(len(ret)-1): yield (ret[i+1]-ret[i])/100 ret_g = red_packet(100,5) print(ret_g) for c in ret_g: print(c)

      

  • 相关阅读:
    保险行业电话外呼型呼叫中心方案
    12355青少年服务台呼叫中心解决方案
    未能找到类型集或命名空间名称 "xxxxxx" (是否缺少using 指令或引用?)
    Smarty中section的使用
    什么是Asterisk,它如何帮助我们的呼叫中心?
    高效呼叫中心的8个健康工作习惯
    Python 爬起数据时 'gbk' codec can't encode character 'xa0' 的问题
    Python 网页解析器
    Python 爬虫入门3种方法
    Python open 读写小栗子
  • 原文地址:https://www.cnblogs.com/y122988/p/9520457.html
Copyright © 2011-2022 走看看