【问题标题】:Go back to a broken loop in python回到python中的一个坏循环
【发布时间】:2015-09-15 02:32:53
【问题描述】:

在 python 中留下循环有 2 种不同的选项。 continue 将您带回到循环的开头,而 break 就像一个电灯开关,它会在脚本运行的剩余时间内切断循环。我的问题是我有一个 while True 循环,我希望能够摆脱它,然后在稍后的代码中返回它。这可能吗,如果可以,我该怎么做?到目前为止,我有这样的事情:

while True
    if #condition:
        #do something
    else:
        #do something
        break
while True
    if #condition:
        #do something
    else:
        break
#code that returns it to the first loop

有没有办法做到这一点,比如 unbreak 之类的?抱歉,我是编程新手,这是我在计算机科学专业的第一年,我刚刚开始学习 python。

【问题讨论】:

    标签: python loops python-3.x


    【解决方案1】:

    你可以把第一个循环放在一个函数中。

    def first_loop():
        while True:
        if something:
            # do something
        else:
            break
    
    # call loop for first time
    first_loop()
    
    while True:
        if something:
            #do something
        else:
            break
    
    # return back to the loop
    first_loop()
    

    【讨论】:

    • 如果我在一个函数中跳出一个循环,当你调用这个函数时,break会重置吗?
    • if语句中的条件满足时会再次爆发。
    • @banana: 如果你想回到你离开函数的最后一个地方;您可以在函数内部使用生成器:yield 来暂停执行,从外部调用 next() 以移动到下一个产量。
    【解决方案2】:

    你不能跳出一个循环然后返回它。

    嗯……你可能可以,但这需要使用臭名昭著的“goto”关键字……你应该不惜一切代价避免这种情况。

    通常情况下,当您想做某事时,先停止做,然后再做一次,您会将“某事”放入函数或过程中。 然后,每次你想做“某事”时,你都会调用或运行该函数。

    def doSomething():
        while True
            if #condition:
                #do something
            else:
                #do something
                break
    
    def doSomethingElse():
        while True
            if #condition:
                #do something
            else:
                break
    
    def doOneMoreThing():
        while True
            if #condition:
                #do something
            else:
                break
    

    然后你可以按照你想要的任何顺序重复一些事情:

    doSomething()
    doSomethingElse()
    doSomething()
    doSomething()
    doOneMoreThing()
    

    【讨论】:

      【解决方案3】:

      您应该简单地将循环包装在函数中:

      def loop1():
      
          while True
              if #condition:
                  #do something
              else:
                  #do something
                  break
      
      def loop2():
      
          while True
              if #condition:
                  #do something
              else:
                  break
      
      loop1()
      loop2()
      loop1()
      

      【讨论】:

        【解决方案4】:

        再换一个循环:

        while True  # outer loop
            while True  # first loop
                if #condition:
                    #do something
                else:
                    #do something
                    break
            while True   # second loop
                if #condition:
                    #do something
                else:
                    break
           # break from outer loop 
           # when you are done returning to the first loop
        

        【讨论】:

          【解决方案5】:

          我认为你应该反之亦然。没有必要打破无限循环。只需做一些功能并在它们之间切换

          def function1():
             do something
          
          def function2():
             do something else
          
          while True:
              if something:
                  function1()
              else:
                  function2()
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-10-17
            • 1970-01-01
            • 2019-02-06
            • 1970-01-01
            • 2019-07-31
            相关资源
            最近更新 更多