在Python中不中断时,在其他内部

2024-09-30 22:24:11 发布

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

我在另一个while循环中包含的else语句中有一个while循环。类似这样的内容:while->;否则->;虽然我正在更新内部while循环中的一些变量,这些变量也构成了外部while循环的条件。我所期望的是,只要内部while循环中的变量取的值打破了外部while循环的条件,外部while循环就应该中断。但这似乎并没有发生,而内部循环一直在运行。最终我得到一个错误,因为循环没有停止,条件仍然无效(IndexError:list index超出范围)

            nums=[0,0,0]
            i=0
            j=i+1
            k=len(nums)-1
            while(k>j):               
                s=nums[i]+nums[j]+nums[k]

              #greater than 0
                if s>0:    
                   #do something
              
                else:
                    #do something

                    while(nums[k]==nums[k-1]):#<<<<<<<------ here I get IndexError: list index out of range
                        print("2nd wihile ",k,j)
                        k-=1
                    k-=1
                    while(nums[j]==nums[j+1]):
                        
                        j+=1
                    j+=1

内部while中的print语句在给出错误之前打印以下内容:

2nd wihile  2 1
2nd wihile  1 1
2nd wihile  0 1
2nd wihile  -1 1
2nd wihile  -2 1
IndexError: list index out of range


Tags: ofgtindex错误语句out条件do
1条回答
网友
1楼 · 发布于 2024-09-30 22:24:11

请看以下内容:

>>> x = 1
>>> while x == 1:
...  while True:
...   print("x", x)
...   x = 2

它总结了您的问题,即外部回路在内部子回路期间未进行测试。
测试将应用于每个iteration,一旦引入内部循环,外部循环将进行迭代,因此检查,直到外部循环的下一次迭代为止

相关问题 更多 >