string = ''
l3 = []
l4 = []
l = []
obj = open('input.txt', 'r')
l1 = obj.readlines()
for i in l1:
l2 = i.split()
for j in l2:
if j != '+' or j != '-' or j != '*' or j != '/':
l3.append(j)
else:
l4.append(j)
l3.reverse()
l4.reverse()
while len(l3) != 0 and len(l4) != 0:
d = l3[len(l3) - 1]
del l3[len(l3) - 1]
e = l4[len(l4) - 1]
del l4[len(l4) - 1]
f = l3[len(l3) - 1]
del l3[len(l3) - 1]
string = string + '(' + d + e + f + ')'
string += '\n'
l.append(string)
j = open('output.txt', 'w')
j.writelines(l)
当我执行程序并打开 output.txt 时,我得到一个空白文件!请注意,我是一个初学者,我对 python 的了解并不比我用过的多!堆栈:对不起,问题是:堆栈:堆栈是一种数据结构(就像列表一样),其中数据仅在一端添加和删除,称为顶部
● 要将项目添加(推送)到堆栈,它必须放在堆栈的顶部。
● 要从堆栈中移除(弹出)一个项目,只有当它也位于堆栈顶部时才必须将其移除。
● 因此,最后压入堆栈的元素是第一个从堆栈中弹出的元素 堆栈的许多示例在日常情况中都会出现。几乎所有的自助餐厅都有一堆托盘或盘子。您只能在顶部移除和添加一个盘子。
中缀表达式:
运算符写在它们的操作数之间。这是我们编写表达式的常用方式。诸如 A * ( B + C ) / D 这样的表达式通常被认为是
后缀表达式:
在这里,运算符写在它们的操作数之后。上面给出的中缀表达式等价于 ABC + * D / 运算符的求值顺序总是从左到右,不能用括号改变这个顺序。因为上例中“+”在“*”的左边,所以加法必须在乘法之前进行。
在这些符号之间转换:
您可以通过移动括号内的运算符直接在这些括号形式之间进行转换,例如 (X + Y) 到 (XY +)。对表达式中的所有运算符重复此操作,最后删除所有多余的括号。
问题陈述:编写程序从输入文件中读取后缀表达式,计算表达式并将结果打印到输出文件。您可以假设表达式仅涉及数字和算术运算符,而不是给定示例中的变量。
提示:使用堆栈(可以使用 Python 列表实现堆栈)