No.2 Calculatior

 1 import re
 2 class Calculator():
 3     '''
 4     Calculator
 5     '''
 6     def run(self, equation):
 7         '''
 8         main
 9         '''
10         equation = equation.replace(' ','')
11         while True:
12             result = re.search('\([^(^)]+\)', equation)
13             if result:
14                 equation_min = self.Equation_dispose(result.group())
15                 value = str(self.A_S(equation_min))
16                 equation = equation.replace(result.group(), value)
17                 equation = self.format(equation)
18             else:break
19         equation = self.format(equation)
20         sum = self.A_S(self.Equation_dispose(equation))
21         print(sum)
22 
23     def M_D(self, equation):
24         '''
25         multiply-divide
26         '''
27         equation = equation.replace(' ','')
28         if "*" in equation:
29             a,b = equation.split('*')
30             return str(float(a) * float(b))
31         if "/" in equation:
32             a,b = equation.split('/')
33             return str(float(a) / float(b))
34     
35     def A_S(self, equation):
36         '''
37         add-sub
38         '''
39         # equation
40         ret = re.findall('[+-]?\d+(?:\.\d+)?', equation)
41         sum = 0
42         for x in ret:
43             sum += float(x)
44         return sum
45     
46     def Equation_dispose(self, equation):
47         '''
48         Equation-format
49         '''
50         while True:
51             result1 = re.search('\d+(\.\d+)?[*/]\d+(\.\d+)?', equation)
52             if result1:
53                 result1 = result1.group()
54                 result2 = self.M_D(result1)
55                 equation = equation.replace(result1, result2)
56             else:return equation
57         
58     def format(self, equation):
59         equation = equation.replace('+-', '-')
60         equation = equation.replace('--', '+')
61         equation = equation.replace('-+', '-')
62         equation = equation.replace('++', '+')
63         return equation
64 
65 equation = input("")
66 calculator = Calculator()
67 calculator.run(equation)

 

转载于:https://www.cnblogs.com/deng-fei/p/11186791.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值