计算器

Posted 高卓

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算器相关的知识,希望对你有一定的参考价值。

开发一个简单的python计算器

  1. 实现加减乘除及拓号优先级解析
  2. 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似功能偷懒实现),运算后得出结果,结果必须与真实的计算器所得出的结果一致
 1 #1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))
 2 import re
 3 
 4 def choice():
 5     #得到用户输入的算式
 6     num = ‘‘.join(input(计算器启动:).split())
 7     #进入循环拆分
 8     while True:
 9         if ( in num:
10             ct = re.search(r\(([^()]+)\), num)
11             if ct is not None:
12                 b = ct.groups()[0]
13                 c = count(b)
14                 num = re.sub(r\(([^()]+)\), str(c), num, 1)
15         else:
16             c = count(num)
17             print(c)
18             break
19 # 乘除式
20 def mul(num):
21     b = re.search(r\d+\.?\d*(\*-?\d+\.?\d*)+, num)
22     if b is not None:
23         b = b.group()
24         rest = 1
25         c = re.findall(r-?\d+\.?\d*, b)
26         ls = []
27         for item in c:
28             ls.append(float(item))
29         for i1 in range(len(ls)):
30             rest = rest * ls[i1]
31         a = re.sub(r\d+\.?\d*(\*-?\d+\.?\d*)+, str(rest), num, 1)
32         return a
33 #加减法
34 def add(num):
35     if -- in num:
36         num = num.replace(--, +)
37     c = re.findall(r-?\d+\.?\d*, num)
38     ls = []
39     for i in c:
40         ls.append(float(i))
41     rest = sum(ls)
42     return rest
43 #开始计算
44 def run(num):
45     b = re.search(r\d+\.?\d*(\/-?\d+\.?\d*)+, num)
46     if b is not None:
47         b = b.group()
48         c = re.findall(r-?\d+\.?\d*, b)
49         ls =[]
50         for i in c:
51             ls.append(float(i))
52         rest = ls[0]
53         for i1 in range(1,len(ls)):
54             rest = rest / ls[i1]
55         num = re.sub(r\d+\.?\d*(\/-?\d+\.?\d*)+, str(rest), num, 1)
56         return num
57 #得到结果
58 def count(b):
59     while True:
60         if * in b:
61             c = b.split(*)
62             if / in c[0]:
63                 b = run(b)
64             else:
65                 b = mul(b)
66         elif / in b:
67             b = run(b)
68 
69         elif + or - in b:
70             b = add(b)
71             return b
72         else:
73             return b
74 choice()

 

以上是关于计算器的主要内容,如果未能解决你的问题,请参考以下文章

从JVM的角度看JAVA代码--代码优化

Vue3官网-高级指南(十七)响应式计算`computed`和侦听`watchEffect`(onTrackonTriggeronInvalidate副作用的刷新时机`watch` pre)(代码片段

golang代码片段(摘抄)

10个JavaScript代码片段,使你更加容易前端开发。

10个JavaScript代码片段,使你更加容易前端开发。

如何在 python 中并行化以下代码片段?