首页 > 代码库 > 计算器
计算器
import re
def init_compute(compute):
#输出计算式列表
compute_a = re.sub(‘ ‘,‘‘, compute)
compute_l = []
compute_list = []
for i in re.split(‘(\-\d+\.*\d*)‘,compute_a):
if i:
compute_l.append(i)
while True:
exp = compute_l.pop(0)
if len(compute_list) == 0 and re.search(‘^\-\d+\.*\d*$‘,exp):
compute_list.append(exp)
continue
if len(compute_list) != 0 :
if re.search(‘([\+\-\*\/\(]$)‘,compute_list[-1]):
compute_list.append(exp)
continue
for i in re.split(‘([\+\-\*\/\(\)])‘,exp):
if i:
compute_list.append(i)
if len(compute_l) == 0:
break
print(compute_list)
return compute_list
def is_symbol(i):
#判断是否为运算符
res = False
symbol = [‘+‘,‘-‘,‘*‘,‘/‘,‘(‘,‘)‘]
if i in symbol:
res = True
return res
def judgement(old_i,new_i):
#判断运算符优先级
level1 = [‘+‘,‘-‘]
level2 = [‘*‘,‘/‘]
level3 = [‘(‘]
level4 = [‘)‘]
if old_i in level1:
if new_i in level2 or new_i in level3:
return ‘<‘
else:
return ‘>‘
elif old_i in level2:
if new_i in level3:
return ‘<‘
else:
return ‘>‘
elif old_i in level3:
if new_i in level4:
return ‘=‘
else:
return ‘<‘
def calculate(num1,symbol,num2):
#对数字进行计算
res=0
if symbol == ‘+‘:
res = num1+num2
elif symbol == ‘-‘:
res = num1-num2
elif symbol == ‘*‘:
res = num1*num2
elif symbol == ‘/‘:
res = num1/num2
return res
def main(compute_1):
#主函数
numbers = []
symbols = []
for i in compute_1:
ret = is_symbol(i)
if ret == False : #判断列表元素是否为数字
i = float(i)
numbers.append(i)
else:
while True:
if len(symbols) == 0:
symbols.append(i)
break
res = judgement(symbols[-1],i)
if res == ‘<‘:
symbols.append(i)
break
elif res == ‘=‘:
symbols.pop()
break
elif res == ‘>‘:
symbol = symbols.pop()
num2 = numbers.pop()
num1 = numbers.pop()
numbers.append(calculate(num1, symbol, num2))
else:
while True:
if len(numbers) == 1:
break
symbol = symbols.pop()
num2 = numbers.pop()
num1 = numbers.pop()
numbers.append(calculate(num1, symbol, num2))
return numbers
def run():
print(‘示例:-1 - 2 *((-60+30+(-40/5)*(-9-2*-5/30-7/3*99/4*2998+10/-568/14))-(-4*-3)/(16-3*2))+3‘)
#-1 - 2 * (-2 + 3)
compute = input(‘请输入您要计算的公式:‘)
compute_1 = init_compute(compute)
l = main(compute_1)
print(‘计算结果:%s‘%l)
if __name__ == ‘__main__‘:
run()
计算器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。