前序算数表达式

本文介绍了一个简单的算数表达式解析和计算程序。该程序能够处理包含括号、加减乘除运算的表达式,并通过栈来实现操作符和操作数的管理。通过逐字符扫描输入的表达式,程序能正确地执行运算并返回最终结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/usr/bin/python
#coding=utf-8

import sys
sys.path.append('/home/administrator/python_dir/tools')
from Stack import Stack

num_stack = Stack()
operator_stack = Stack()
brackets_stack = Stack()

import char_tools
def execute_express(press):
i=0;
while i < len(press):
char = press[i]
if char_tools.str_is_number(press[i]):
j=exe_num(press,i)
if j > i and j != -1:
num_stack.push(press[i:j])
i=j
else:
num_stack.push(press[i])
i = i+1

elif char_tools.str_is_operator(press[i]):
operator_stack.push(press[i])
i = i+1
elif press[i] == '(':
brackets_stack.push(press[i])
i = i+1
elif press[i] == ')':
if brackets_stack.isEmpty() or operator_stack.isEmpty():
print '有错误'
raise RuntimeError('有错误')
else:
value = exe_num_value(num_stack.pop(),num_stack.pop(),operator_stack.pop())
num_stack.push(value)
i = i+1
else:
i = i+1

def exe_num_value(num0,num1,operator):
value = None
if operator == '+':
value = int(num0)+int(num1)
elif operator == '-':
value = int(num1)-int(num0)
elif operator == '*':
value = int(num1)*int(num0)
elif operator == '/':
value = int(num1)/int(num0)
else :
print '出现错误!\t\n'
raise RuntimeError('有错误')
return value

def exe_num(press,i):

while i <len(press):
if char_tools.str_is_number(press[i]):
i = i+1
continue
else:
return i

return -1


if __name__ == '__main__':


print '算数表达式计算'
execute_express('((*2 2)+(+ 1 2 ))')
print num_stack.pop()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值