博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈 后缀表达式
阅读量:7239 次
发布时间:2019-06-29

本文共 2083 字,大约阅读时间需要 6 分钟。

看了老师给的博客,学习了一下,我学的确实很菜啊,仿照写了一个可以实现任意数字个数的加括号运算,目前只支持加一个括号。。。。

收获真的挺大

def to_rpn(f4):    def compare(x, y):        v = {
'+': 0, '-': 0, '*': 1, '/': 1, '(': 2} return 1 if y == '(' else v[x] - v[y] rpn, operators = [], [] for i in f4: if i not in ['+', '-', '*', '/', '(', ')']: rpn.append(i) else: if i == ')': while operators[-1] != '(': rpn.append(operators.pop()) operators.pop() elif not operators or 0 < compare(i, operators[-1]): operators.append(i) else: while operators and compare(i, operators[-1]) < 1: rpn.append(operators.pop()) operators.append(i) while operators: rpn.append(operators.pop()) return rpndef rpn_to_answer(f4): answer_func = [lambda x, y: x + y, lambda x, y: x - y, lambda x, y: x * y, lambda x, y: x / y] answer_func_re = [lambda x, y: y + x, lambda x, y: (y - x) * -1, lambda x, y: y * x] number = [] for i in f4: if i not in ['+', '-', '*', '/']: number.append(i) else: x, y, z = number.pop(), number.pop(), None try: z = answer_func[['+', '-', '*', '/'].index(i)](y, x) except TypeError: z = answer_func_re[['+', '-', '*', '/'].index(i)](y, x) number.append(z) return number[0]def random_f4(_op):#操作数 from random import randint as ran r = [] j = _op*2 - 1 for i in range(j): if i % 2 == 1: r.append(['+', '-', '*', '/'][ran(0, 3)]) if i % 2 == 0: r.append(ran(1, 9)) x = ran(0,_op-2) r.insert(x*2,'(') y = ran(x+2,_op) r.insert(y*2,')') return (r)if __name__ == "__main__": from fractions import Fraction as F ops = input("数字个数:") ops = int(ops) r = random_f4(_op=ops) print(r) r = to_rpn(r) print(r) r = rpn_to_answer(r) r = F(r).limit_denominator(1000) print(r)

 

截图:

 

 

现在python学的还是很菜啊。。。。。。。。。

 

转载于:https://www.cnblogs.com/songyuu/p/7663032.html

你可能感兴趣的文章
Eclipse 常用设置总结
查看>>
linux schedule() 方法浅析
查看>>
Arrays(理解)
查看>>
多线程笔记
查看>>
tomcat 常用调整
查看>>
我心目中的编程语言
查看>>
Ubuntu 常见错误--Could not get lock /var/lib/dpkg/lock
查看>>
android布局管理---第二篇表格布局
查看>>
一些经验总结
查看>>
DMURLConnection
查看>>
iframe 与主框架相互访问方法
查看>>
first
查看>>
mysql存储过程调试工具
查看>>
nginx
查看>>
解决jenkins启动完会kill掉的衍生进程
查看>>
关于Linux下s、t、i、a权限
查看>>
js 获取CSS样式
查看>>
Symfony2安装时欢迎页面CSS混乱的解决方案
查看>>
Selenium-webdriver 系列Python教程(3)————如何执行一段JS
查看>>
Apple 企业开发者账号&邓白氏码申请记录
查看>>