求个算法的思路
本帖最后由 茫茫狐 于 2021-12-28 10:07 编辑算数表达式(python系)求助个思路:
输入"任意"算数表达式字符串
例如2+3.1*4-8.2/2,输出计算结果为10.3
但他不能用eval等现成函数完成,还要考虑实现加减乘除
用栈去实现,分别开一个符号栈和数字栈,用栈模拟先乘除后加减的顺序即可 可以看看波兰表达式和逆波兰表达式 【python】利用栈实现四则运算表达式求值
https://blog.csdn.net/weixin_49298240/article/details/109720319
第一步:定义两个变长数组a[]、b[],a[]用来存放输入字符串中的数字,b[]用来存放字符串中的运算符
第二步:遍历b[],当b=='*'、'/'、'%'其中之一时,a=a(*或/或%)a,然后将b从数组b中移除,a从a中移除
第三步:此时b[]中只有‘+’、‘-’两种运算符,依次计算即可
例如字符串s="'12-3.6*2+8.4/4+2'"
此时数组a=
数组b=['-','*','+','/','+']
第一次遍历,当 i=1时,b='*',故a=a*a=3.6*2=7.2,b.remove(b),a.remove(a)
此时a=,b=['-','+','/','+']
第二次遍历,当i=2时,b='/',故a=a/a=8.4/4=2.1,b.remove(b),a.remove(a)
此时a=,b=['-','+','+']
接下来因为只剩下加减操作,不存在优先级高低问题,依次执行即可 字符串表达式解决。 不太懂python,但js里eval("2+3.1*4-8.2/2")可以直接出结果
那么让python执行js语句,是不是就可以了(菜鸟的想法{:301_1009:})
下面是百度的方法:
import execjs
result=execjs.eval("2+3.1*4-8.2/2")
学习学习,帮顶!!{:301_998:} 自己写一个解释器呗,Python的话能用eval偷懒还不用,不如学C 感谢撒币
页:
[1]
2