四则混合运算计算器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))