2012-01-03 270 views
7

我是Python新手。其实我用Java实现了一些东西,如下所示。Python中的无限循环

for(;;){ 
switch(expression){ 
    case c1: statements 

    case c2: statements 


    default: statement 
} 
} 

我该如何在Python中实现它?

回答

12

使用while循环:

while True: 

     if condition1: 
      statements 
     elif condition2: 
      statements 
     ... 
     else: 
      statements 
6
while True: 
    # do stuff forever 
0

您可以使用

while True: 
    if c1: 
     statements 
    elif c2: 
     statements 
    else: 
     statements 

var = 1 
while var == 1: 
    # do stuff 
+1

正常情况下,如果我们正在说无限循环,则使用布尔值“True”而不是整数。这样一来,意图就变得更清楚和更容易调试(谁说'var'的值可能不会随着时间而改变?)。 – Makoto 2012-01-03 14:55:49

+0

这是真的,并且使用布尔值(可能)是祝福的方式。这是实现同样目标的另一个例子。 'var'可以改变,但是如果她选择这种方式,那么开发者也不应该改变它。 ;-) – 2012-01-03 15:24:58

+1

但为什么'var'呢?如果关键点的值始终等于1来创建一个无限循环,为什么不直接说'while 1 == 1'?做完这些之后,不要只写'while True'是荒谬的。 – Ben 2012-01-03 16:16:31

1

形式上,有一个在Python中没有switch声明;这是一系列嵌套的if-elif-else陈述。

无限循环由while True语句完成。

一起:

while True: 
    if condition_1: 
     condition_1_function 
    elif condition_2: 
     condition_2_function 
    elif condition_3: 
     condition_3_function 
    else: # Always executes like "default" 
     condition_default_function 
+0

请注意,'if/elif/else'中没有像'switch'那样的'fall-through' – dcrosta 2012-01-03 15:06:36

1

如果你正在寻找一种方式来在python无限循环,你可以使用itertools.count()函数就像一个for循环。 http://docs.python.org/py3k/library/itertools.html#itertools.count

+0

这看起来对无限生成器表达式很有用,比如'('CONSTANT'for itertools.count(0, 0))'作为期望生成器的函数的参数。您不必定义具有True循环的单独函数。 – hobs 2013-07-12 18:13:33

+0

@hobs为了达到这个目的,你可以使用'itertools.repeat('CONSTANT')'。 – flornquake 2013-08-14 17:29:19