Lute~(๑• . •๑) 2018-12-20 02:07 采纳率: 0%
浏览 7351

为什么程序运行后既不出结果也不报错也不终止?

做逆波兰表达式的时候,代码运行后什么反应也没有,没有报错没有终止,shell里面可以输入,但是也没有任何反应,怎么回事呢?

class stack:
    item = None

    def __init__(self):
        self.item = []

    def push(self, i):
        self.item.append(i)

    def pop(self):
        while not self.empty():
            return self.item.pop()

    def top(self):
        try:
            return self.item[-1]
        except:
            return None

    def empty(self):
        return len(self.item) == 0


stack1 = stack()
stack2 = stack()
formula = 'a+b'
deal_formula = list(formula)
for i in deal_formula:
    if i == "(":
        stack1.push(i)
    elif i == ")":
        while stack1.top() != "(":
            stack2.push(stack1.top())
            stack1.pop()
        else:
            stack1.pop()
            continue
    elif i == "*" or "/":
        while stack1.top() == '*' or '/':
            stack2.push(stack1.top())
            stack1.pop()
        else:
            stack1.push(i)
            continue
    elif i == "+" or "-":
        while stack1.top() == "(" or None:
            stack1.push(i)
            continue
        else:
            stack2.push(stack1.top())
            stack1.pop()
    else:
        stack2.push(i)
while not stack1.empty():
    stack2.push(stack1.top())
    stack1.pop()
print stack2.item
if not stack2.item:
    print 'wd'
else:
    print '??'

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-28 03:58
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 这篇博客: [LeetCode]-Python刷题第三周(栈和队列)中的 解法2: push的时候,其他元素不动只是用一个变量记住这个新元素。当top的时候直接给这个变量的值。当pop时,在调整顺序,把最后一个排到前面,弹出。变量记住目前在最尾部的值。 部分代码与你问题描述中的代码有较高的匹配度, 你可以参考下
      class MyStack(object): def __init__(self): self._queue = collections.deque() #利用collections模块建立一个deque的双向队列。 def push(self, x): q = self._queue q.append(x) for _ in range(len(q) - 1): #每压入一个数,都将前面的数字转移到队列的后边。因为是空列表所以这样做有效,如果一开始是非空列表就不管用了 q.append(q.popleft()) #popleft(获取最左边一个元素,并在队列中删除),然后加在q中。 def pop(self): return self._queue.popleft() def top(self): return self._queue[0] def empty(self): return not len(self._queue) # Your MyStack object will be instantiated and called as such: # obj = MyStack() # obj.push(x) # param_2 = obj.pop() # param_3 = obj.top() # param_4 = obj.empty()

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!