我正在使用post-fix符号和堆栈,我想知道当字符串'+'存在时,是否/如何对列表、堆栈等的元素求和?你知道吗
例如,我将使用一个列表而不是一个堆栈(尽管如果您有一个针对堆栈的解决方案,请务必继续)。你知道吗
所以,如果我有:
string = '1 2 3 +'
把它变成一个列表:
['1','2','3','+']
如果正确,将评估为:
6
以下是我认为可行的方法(注意:我所做的valid()函数检查是否可以将其更改为基于字符串的浮点值。它工作正常):
def post_fix(string):
lst = []
for i in string:
if '(' in lst:
pass
elif valid(i) is True:
int(i)
lst.append(i)
elif '+' in string:
'+' == sum(lst)
print(sum(lst))
post_fix('1 2 3 +')
我怎样才能使它工作,以便如果存在“+”或“-”等,它将执行适当的操作?你知道吗
注意:为简单起见,您可以假设运算符始终位于末尾。所以不要担心像“12+34*”这样的事情,尽管如果你有一个解决方案,它会非常感激。你知道吗
使用堆栈计算后缀符号。当你看到一个数字,你就把它推到堆栈上。当你看到一个操作符时,你弹出足够多的数字来满足它并推送结果。最后,堆栈应该只有一个项目,您可以打印它。你知道吗
现在通常
+
是一个二进制运算符:它需要两个操作数。在您的情况下,您希望它消耗堆栈上的任何内容。对于+
来说,这是一个非常规的含义,但它的实现非常简单。你知道吗这种结构很容易扩展到处理其他操作。例如,可以使用
+
进行二进制加法,++
进行全和运算。你知道吗我相信你甚至不需要把它转换成一个列表(尽管它可以使后续的数字处理更容易)。比如:
也应该执行,因为字符串在pyton中被视为iterables
这里有几个问题。第一个是
int(i)
。这不会将i
的副本创建为整数,但根本不会修改i
。附加到列表的i
仍然是一个字符串。第二个问题是,这不适用于两位数的数字-您会立即附加到列表中,而不是跟踪可能的两位数。你知道吗解决这些问题:
输出:
相关问题 更多 >
编程相关推荐