【问题标题】:while inside else inside while not breaking in Pythonwhile inside else inside 而不是在 Python 中中断
【发布时间】:2021-11-02 18:26:29
【问题描述】:

我在 else 语句中有一个 while 循环,它包含在另一个 while 循环中。像这样:while->else->while。我正在更新内部while循环中的一些变量,这些变量也形成了外部while循环的条件。我期望的是,一旦内部 while 循环中的变量采用破坏外部 while 循环条件的值,外部 while 循环就会中断。但这似乎没有发生,内部 while 循环继续运行。最终我得到一个错误,因为循环没有停止并且条件仍然无效(IndexError:列表索引超出范围)

            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

inner 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

【问题讨论】:

    标签: python python-3.x if-statement while-loop


    【解决方案1】:

    看看以下内容:

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

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

    【讨论】:

    • 非常感谢!我现在明白这个问题了。
    猜你喜欢
    • 2012-03-20
    • 2013-07-08
    • 1970-01-01
    • 2017-07-22
    • 2017-07-21
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    相关资源
    最近更新 更多