python实现逆波兰计算简单方法,python实现波兰,这是一段与算法相关的py
python实现逆波兰计算简单方法,python实现波兰,这是一段与算法相关的py
这是一段与算法相关的python源码分享。就用python方法实现了逆波兰计算的简单方法。只输入一段表达式,从而计算出结果的应用。
# -*- coding: utf-8 -*-symbol_priority = {}symbol_priority[0] = ['#']symbol_priority[1] = ['(']symbol_priority[2] = ['+', '-']symbol_priority[3] = ['*', '/']symbol_priority[4] = [')']def comparePriority(symbol, RPN_stack, symbol_stack): '''Compare priority between two symbols''' global symbol_priority if len(symbol_stack) > 0: symbol_pop = symbol_stack.pop() else: return for list in symbol_priority.values(): if (symbol in list) and (symbol_pop in list): '''same priority''' symbol_stack.append(symbol_pop) symbol_stack.append(symbol) return elif symbol in list: '''symbol is smaller''' RPN_stack.append(symbol_pop) #recusion call comparePriority(symbol, RPN_stack, symbol_stack) return elif symbol_pop in list: '''symbol is bigger''' symbol_stack.append(symbol_pop) symbol_stack.append(symbol) return else: continue symbol_stack.append(symbol_pop) return def scanEveryone(input_string, RPN_stack, symbol_stack): for ch in input_string: if ch.isdigit(): RPN_stack.append(ch) else: if len(symbol_stack) > 0: if ch == '(': symbol_stack.append(ch) elif ch == ')': while True: symbol_pop = symbol_stack.pop() if symbol_pop == '(': break else: RPN_stack.append(symbol_pop) else: comparePriority(ch, RPN_stack, symbol_stack) else: symbol_stack.append(ch)def scanInput(RPN_stack, symbol_stack): input_string = raw_input() input_string += '#' scanEveryone(input_string, RPN_stack, symbol_stack) def calRPN(RPN_stack): value_stack = [] RPN_stack.append('#') for value in RPN_stack: if value == '#': return value_stack.pop() break if value.isdigit(): value_stack.append(value) else: right_value = value_stack.pop() left_value = value_stack.pop() cal_string = left_value + value + right_value value_stack.append(str(eval(cal_string)))#www.iplaypy.com def main(): RPN_stack = [] symbol_stack = [] scanInput(RPN_stack, symbol_stack) print calRPN(RPN_stack)if __name__ == '__main__': main()
编橙之家文章,
相关内容
- 判断并修改图片分辨率的python方法,,平时工作中常会遇
- python应用脚本之解析淘宝助理数据包csv文件,pythoncsv
- Python之SMTP学习笔记方法详解,pythonsmtp学习笔记,这是关
- 菜鸟的递归查找文件python实现,菜鸟递归python,做为一个
- Python实现折半二分查询方法,python实现折半二分,本来这
- 一行代码实现csv文件转化为数字二维列表的python实现方
- Python排序之直接插入排序方法,python排序直接插入,Py
- 分享webqq加密算法解析,webqq加密算法解析,这是我几年
- python如何调用win32应用程序方法分享,pythonwin32,在网上
- Python数学方程式画心型图案源码示例,python源码,如下几
评论关闭