不使用栈Python计算器GUI程序

实现一个计算器功能需要使用栈。

比如我要计算:7-3*2+1,这个得先乘除后加减,这就需要栈了。

1.自左向右扫描表达式,凡是遇到操作数一律进操作数栈。

2.当遇到运算符时,如果他的优先级比运算符栈栈顶元素的优先级高就栈。反之,取出栈顶运算符和操作数栈顶的两个连续操作数运算,并将结果存入操作数栈,然后继续比较该运算符与栈顶的运算符的优先级。

3.左括号一律进运算符栈,右括号一律不进运算符栈,取出栈顶运算符和操作数栈顶的两个连续操作数运算,并将结果存入操作数栈,直到取出左括号为止。

然而,在Python中由于有eval函数的存在,就不需要使用栈来实现计算器了。

eval(expression, globals=None, locals=None)  — 官方文档中的解释是,将字符串str当成有效的表达式来求值并返回计算结果。

例如:

接下来是利用tkinter编写的代码:

效果:

当然,计算结果会自动保存到当前目录下的txt文件中去。

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注