while循环导致无限循环

2024-05-13 07:10:13 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个小代码片段,它导致我的程序由于无限循环而崩溃

while not stack.is_empty():
    if operators[stack.peek()] >= operators[character]:
        result += stack.pop()

其中stack是一个stack对象,operators是一个字典。 但是下面的代码不会导致无限循环

^{pr2}$

我的问题是:这些代码片段基本上不是一回事吗?为什么一个导致无限循环,而另一个却没有?在

谢谢


Tags: 对象代码程序if字典isstacknot
2条回答
while not stack.is_empty():
    if operators[stack.peek()] >= operators[character]:
        result += stack.pop()

在这里,while循环一直运行到堆栈为空并且您只为>=弹出,它在堆栈中为<条件保留一些元素。所以为了让堆栈变空,堆栈大小()==次数operators[stack.peek()] >= operators[character]true


^{pr2}$

在这里,您只允许while循环只在>=条件与stack not empty一起statisfied时继续,从而限制while循环。在

第一个循环遍历堆栈并查看堆栈并检查某个条件是否为真,但仍在继续。在第二种情况下,它在条件为假后切断

相关问题 更多 >