Pythonはシンプルな電卓を達成します

モジュールの再

インポートから functoolsはインポート減らす

DEF(EXP)をmul_div: 2つの数の乗算又は除算の
    IF  ' * '  EXP:
        A、B = exp.split(' * ' を返すフロート(A)を* フロート(B)
     IF  ' / '  EXP:
        A、B = exp.split(' / ' を返すフロートを(A)/ フロート(B)

DEF (EXP)をexp_fmt:
     一方 re.search('[+ - ] {2} 'EXP): 
        EXP = exp.replace(' - ' ' + ' 
        EXP = exp.replace(' + - ' ' - ' 
        EXP = exp.replace(' - + ' ' - ' 
        EXP = exp.replace(' ++ ' ' + " を返すEXP デフremove_addsub(EXP):
    RET =再。findAll(

' - (?:\ \ D +)?[+] \ D + ' 、EXP)
    RES =減らす(ラムダ A、B:フロート(A)+ フロート(B)、RET)
     を返すRES 

DEFの remove_muldiv(EXP)を:    すべての乗算と除算式計算し
    ながら、真:
        RETを = re.searchを('。??? \ D +(\ \ D +)[* /] - \ D +(\ \ D +)' 、EXP)
         IF RET :
            son_exp = ret.group()   3 4 * 5 * 12である。 
            RES = mul_div(son_exp)
            EXP = exp.replace(son_exp、STR(RES))
         リターンEXP 

DEF CAL(EXP):
    RES = remove_muldiv(EXP)   計算である 
    RES = exp_fmt(RES)                  仕上げ記号 
    RET = remove_addsub(RES)            減算演算
    リターンRET 

DEF 主に(EXP):
    EXP = exp.replaceを('  ' ' ' しばらく真:
        RET = re.search(' \([^()] + \)" 、EXP)
         IF RET:
            RES = CAL(ret.group())
            EXP =exp.replace(ret.group()、STR(RES))
         リターンCAL(EXP)

EXP = " 1から2 *((60-30 +( - 40/5)*(9-2 * 5月3日+ 7/3 * 4分の99 * 2998 +10 * 14分の568)) - (-4 * 3)/(16-3 * 2))' 
RET = メイン(EXP)
 プリント(RET)

 

おすすめ

転載: www.cnblogs.com/duyu123/p/11316919.html