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()

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

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况