问题是编写一个函数来创建一个堆栈,将给定参数字符串中的字母推到堆栈上,并将它们弹出,如参数字符串中的'*'
所示。表达式中的字母表示压入堆栈,星号表示弹出操作。函数名为modify_stack
,它接受单个字符串作为参数并返回pop操作返回的值序列。使用print(modify_stack('EAS*Y*QUE***ST***IO*N***'))
调用函数
我的代码:
def modify_stack(symbolString):
stack=Stack()
i=0
for i in symbolString:
if i != '*':
stack.push(i)
else:
print(stack.pop())
正确的答案是'SYEUQTSAONIE'
,但我得到了不同的结果。请指出我错在哪里。
使用正确的
Stack
实现,您的代码可以正常工作,并打印出预期的字符序列。我认为您的问题只是结果打印在
modify_stack()
中,而不是作为函数返回值返回。这是通过函数应该被调用-print(modify_stack('EAS*Y*QUE***ST***IO*N***'))
的方式提出的。显然,应该是来自modify_stack()
的返回值。只需更改函数以累积生成的字母序列的列表,然后将该序列作为字符串返回。。。像这样:
现在,每当看到
*
时,每个弹出的字符都会添加到result
列表的末尾。最后,使用join()
将result
中的字符转换为字符串,并从函数返回相关问题 更多 >
编程相关推荐