码迷,mamicode.com
首页 > 其他好文 > 详细

module2-计算器

时间:2017-09-15 18:57:31      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:python练习

#!/usr/local/bin/python3
# -*- coding:utf-8 -*-
# AUTHOR:Howard hao
# a = ‘1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )‘
import re

def main():
    a = input(‘输入算式:‘)
    while ‘(‘ in a:
        print(‘a = ‘,a)
        b = re.search(‘\(([^()]+)\)‘,a).groups()[0]
        print(‘b = ‘,b)
        a = re.sub(‘\([^()]+\)‘,str(calculate(b)),a,1)
        print(‘替换后a = ‘,a)
    else:
        print(‘The result is‘,calculate(a))


#计算乘除加减(分步计算乘除)
def md(e):
    if ‘*‘ in e:
        E = re.split(‘\*‘, e,1)
        E1 = E[0].replace(‘ ‘,‘‘)
        E2 = E[1].replace(‘ ‘,‘‘)
        return float(E1)*float(E2)
    elif ‘/‘ in e:
        E = re.split(‘/‘, e,1)
        E1 = E[0].replace(‘ ‘, ‘‘)
        E2 = E[1].replace(‘ ‘, ‘‘)
        return float(E1)/float(E2)
    else:
        e = e.replace(‘ ‘, ‘‘).replace(‘++‘, ‘+‘).replace(‘+-‘, ‘-‘).replace(‘--‘,‘+‘)
        e = re.findall(‘[+-]?\d+\.?\d*‘, e)
        l = []
        for i in e:
            if ‘.‘ in i:
                l.append(float(i))
            else:
                l.append(int(i))
        else:
            return sum(l)

#截取一段计算传回md函数计算
def calculate(c):
    while ‘*‘ in c or ‘/‘ in c:
        print(‘c = ‘,c)
        d = re.search(‘\s*[+-]?\s*\d+\.?\d*\s*[*/]\s*[+-]?\s*\d+\.?\d*‘,c).group()
        print(‘d = ‘,d)
        # break
        c = re.sub(‘\s*[+-]?\s*\d+\.?\d*\s*[*/]\s*[+-]?\s*\d+\.?\d*‘,‘‘‘+‘‘‘ + str(md(d)),c,1)
        print(‘c = ‘,c)
    else:
        return md(c)
main()


本文出自 “ProgressEveryd” 博客,请务必保留此出处http://987774031.blog.51cto.com/11704329/1965540

module2-计算器

标签:python练习

原文地址:http://987774031.blog.51cto.com/11704329/1965540

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!