2012-01-03 194 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