如果循环在Python中停止,则仅运行一次statment

时间:2014-07-10 12:15:49

标签: python while-loop nested-loops

我一直在做一些需要在另一个无限while循环中运行无限while循环(不要判断)的事情,如果发生某种事件则会中断。我需要在内部循环中断时运行一次语句,而不在外部循环中修改它。

我需要这样的东西:

while True:
   while condition:
       do stuff
   <run some code when the inside while finishes>

   continue running external loop without running the line inside <>

基本上,while-else构造的反向。

编辑:我已将代码更改为与实际问题相关联。我真的很抱歉这个错误。被其他东西轰炸,并没有思考。

4 个答案:

答案 0 :(得分:3)

如果你只需要在内部while中断时运行一次语句,为什么不把它放在if块中呢?

while True:
  while condition:
    if other-condition:
      <code to run when the inside loop breaks>
      break

  <continue external loop>

编辑:为了在内循环结束后只运行一次(没有if other_condition: ...; break),你应该使用以下内容:

while True:
  has_run = False
  while condition:
    <loop code>
  if not has_run:
    <code to run when inner loop finishes>
    has_run = True

  <rest of outer loop code>

答案 1 :(得分:-1)

添加一个在代码执行一次后切换的布尔值!通过这种方式,您可以始终在循环中使事情发生一次。此外,如果你想再次运行外部循环,内部循环将再次启动,它将再次中断,所以你确定你只想运行该行一次吗?

broken = False
while True:   
   while condition:
       if other-condition:
            break
   if not broken:
       broken = True
       <run some code when the inside while breaks>

   continue running external loop without running the line inside <>

答案 2 :(得分:-1)

如果您需要在while循环后继续使用代码而不是使用变量was_break

while True:

   was_break = False

   while condition:
       if other-condition:
            was_break = True
            break

   if was_break:
       <run some code when the inside while breaks>

   continue running external loop without running the line inside <>

答案 3 :(得分:-1)

Pythonic的方法是使用while循环。这就是它应该如何完成的。

如果else语句与while循环一起使用,则在条件变为false时执行else语句。

x=1
while x:
    print "in while"
    x=0
    #your code here
else:
    print "in else"