自编Python程序:四则混合运算计算器Calculator

四则混合运算计算器Calculator

思路:(1)获取一个运算公式(四则混合)
(2)对获取的公式进行处理,因为Input获取的是字符串形式,这里处
理时将之转换成列表,并对其中包含的多位数进行处理.见DealFormula函数
(3)对处理后返回的计算式列以此进行先乘除后加减操作得到最终结果

附:这里的函数Fun_Mul,Fun_Div,Fun_Sub个人感觉能进行更适当的处理,
但由于水平问题,这里并没有进行优化,希望浏览的大神们能给出建议>

import time#获取程序运行时间
start = time.clock()
class Calculator(object):
    '''这是一个四则混合运算计算器'''
    def __init__(self):
        self.name = Calculator
        self.formula=input('Please input formula:').strip()#让用户输入公式
        self.formula_list=[]#定以一个空列表



    def Fun_Mul(self):
    #计算公式中所有乘法运算
        i=0
        while i<len(self.formula_list):
            if self.formula_list[i] == '*' and (i+2)!=len(self.formula_list):
                Sum=int(self.formula_list[i-1])*int(self.formula_list[i+1])
                self.formula_list[(i-1):(i+2)]=[Sum]
                i=i-2
            elif self.formula_list[i] == '*' and (i+2)==len(self.formula_list):
                Sum=int(self.formula_list[i-1])*int(self.formula_list[i+1])
                self.formula_list[(i-1):]=[Sum]    
                
            else:
                i=i+1

                
    def Fun_Div(self):
    #计算公式中所有除法运算
        i=0
        while i<len(self.formula_list):
            if self.formula_list[i] == '/' and (i+2)!=len(self.formula_list):
                Sum=int(self.formula_list[i-1])//int(self.formula_list[i+1])
                self.formula_list[(i-1):(i+2)]=[Sum]
                i=i-2
            elif self.formula_list[i] == '/' and (i+2)==len(self.formula_list):
                Sum=int(self.formula_list[i-1])//int(self.formula_list[i+1])
                self.formula_list[(i-1):]=[Sum]    
                
            else:
                i=i+1


                
    def Fun_Sub(self):
    #计算公式中所有减法法运算
        i=0
        while i<len(self.formula_list):
            if self.formula_list[i] == '-' and (i+2)!=len(self.formula_list):
                Sum=int(self.formula_list[i-1])-int(self.formula_list[i+1])
                self.formula_list[(i-1):(i+2)]=[Sum]
                i=i-2
            elif self.formula_list[i] == '-' and (i+2)==len(self.formula_list):
                Sum=int(self.formula_list[i-1])-int(self.formula_list[i+1])
                self.formula_list[(i-1):]=[Sum]    
                
            else:
                i=i+1
                

        
    def DealFormula(self):
        #将计算式由字符串转成列表,并对其包含的多位数进行处理
        self.formula_list=list(self.formula)
        sud=['+','-','*','/','(',')']
        num = 0
        Sum=''
        while num<len(self.formula_list):
            if self.formula_list[num].isdigit():
                Sum=Sum+self.formula_list[num]
                num=num+1
                if num==len(self.formula_list):
                    buc=len(Sum)
                    self.formula_list[(num-buc):num]=[Sum]  
                continue
            elif self.formula_list[num] in sud:
                buc=len(Sum)
                self.formula_list[(num-buc):num]=[Sum]
                Sum=''
                num=num+1-(buc-1)
                continue
            else:
                print('Input error')


    def main(self):
        #主函数,经过乘,除,减法运算后,计算式中只剩加法运算,对其进行累加
        self.DealFormula()
        self.Fun_Mul()
        self.Fun_Div()
        self.Fun_Sub()

        result = 0
        for number in self.formula_list:
            if number =='+':
                continue
            else:
                result=result+int(number)
        print(result)
            
            



        

calculator=Calculator()
calculator.main()
END=input('Enter any key to return')#防止程序闪退
end = time.clock()
print('Running time:' ,(end-start))
发布了17 篇原创文章 · 获赞 2 · 访问量 466

猜你喜欢

转载自blog.csdn.net/qq_45894553/article/details/104441326
今日推荐