2015-06-28 4 views
4

Существует два разных варианта выхода из цикла в python. continue, который возвращает вас к началу цикла и разбивается, что похоже на переключатель освещения, и в течение оставшегося времени, которое запускает скрипт, он отключает цикл. Моя проблема заключается в том, что у меня есть цикл while True, и я хочу, чтобы он смог вырваться из него, а затем вернуться к нему позже в коде. Возможно ли это, если да, то как я могу это сделать? До сих пор у меня есть что-то вроде этого:Вернитесь к сломанной петле в python

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 

Есть ли способ сделать это, как разбойник или что-то еще? Извините, поскольку я новичок в программировании. Это мой первый год в области компьютерных наук, и я только начинаю изучать питон.

ответ

5

Вы можете поместить первый цикл в функцию.

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() 
+1

Если я вырвусь из цикла в функции, сброс сброса при вызове функции? –

+0

Он снова вспыхнет, когда будет выполнено условие в выражении if. – mallard

+1

Хорошо, это решение отлично работает для моей ситуации. Благодаря! –

1

Вы не можете вырваться из цикла, а затем вернуться к нему.

Ну, возможно, это возможно, но для этого потребуется использование печально известного ключевого слова «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() 
1

Вы должны просто обернуть петли в функции:

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() 
-1

Просто оберните еще один цикл:

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 
-1

Я думаю, вы должны сделать наоборот. Не нужно прерывать бесконечный цикл. Просто выполните некоторые функции и переключайтесь между ними.

def function1(): 
    do something 

def function2(): 
    do something else 

while True: 
    if something: 
     function1() 
    else: 
     function2() 
Смежные вопросы