2024-06-18 03:55:09 发布
网友
这是一个小代码片段,它导致我的程序由于无限循环而崩溃
while not stack.is_empty(): if operators[stack.peek()] >= operators[character]: result += stack.pop()
其中stack是一个stack对象,operators是一个字典。 但是下面的代码不会导致无限循环
我的问题是:这些代码片段基本上不是一回事吗?为什么一个导致无限循环,而另一个却没有?在
谢谢
在这里,while循环一直运行到堆栈为空并且您只为>=弹出,它在堆栈中为<条件保留一些元素。所以为了让堆栈变空,堆栈大小()==次数operators[stack.peek()] >= operators[character]是true
>=
<
operators[stack.peek()] >= operators[character]
true
在这里,您只允许while循环只在>=条件与stack not empty一起statisfied时继续,从而限制while循环。在
第一个循环遍历堆栈并查看堆栈并检查某个条件是否为真,但仍在继续。在第二种情况下,它在条件为假后切断
在这里,while循环一直运行到堆栈为空并且您只为
>=
弹出,它在堆栈中为<
条件保留一些元素。所以为了让堆栈变空,堆栈大小()==次数operators[stack.peek()] >= operators[character]
是true
^{pr2}$
在这里,您只允许while循环只在
>=
条件与stack not empty一起statisfied时继续,从而限制while循环。在第一个循环遍历堆栈并查看堆栈并检查某个条件是否为真,但仍在继续。在第二种情况下,它在条件为假后切断
相关问题 更多 >
编程相关推荐