2012-01-03 4 views
7

Sono nuovo di Python. In realtà ho implementato qualcosa usando Java come mostrato di seguito.Infinite per loop in Python

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

    case c2: statements 


    default: statement 
} 
} 

Come implementarlo in Python?

risposta

12

Uso ciclo while:

while True: 

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

È possibile utilizzare

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

o

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

Normalmente è più implicito utilizzare il valore booleano "True" invece di un intero se stiamo parlando di cicli infiniti. In questo modo, l'intento è più chiaro e più facile da eseguire il debug (chi vuol dire che il valore di 'var' potrebbe non cambiare nel tempo?). – Makoto

+0

È vero, e usare il booleano è (probabilmente) il modo benedetto. Questo è solo un altro esempio di ottenere la stessa cosa. 'var' può cambiare, ma spetta allo sviluppatore non cambiarlo se sceglie di andare in quel modo. ;-) –

+1

Ma perché hai 'var' a tutti? Se il punto è di avere un valore sempre uguale a 1 per creare un ciclo infinito, perché non dire semplicemente 'while 1 == 1'? E avendo fatto ciò, è assurdo non scrivere "mentre è vero". – Ben

1

Formalmente, non c'è switch dichiarazione in Python; è una serie di istruzioni nidificate if-elif-else.

I loop infiniti sono completati dall'istruzione while True.

Tutti insieme:

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

Attenzione che non c'è fall-through in 'if/elif/else' come ci sarebbe in' switch' – dcrosta

1

Se siete alla ricerca di un modo per scorrere all'infinito in Python è possibile utilizzare la funzione di itertools.count() come un ciclo for. http://docs.python.org/py3k/library/itertools.html#itertools.count

+0

Questo sembra utile per infinite espressioni di generatore come '('CONSTANT' per i in itertools.count (0, 0)) 'come argomento per le funzioni che prevedono un generatore. Non è necessario definire una funzione separata che abbia il ciclo True. – hobs

+0

@hobs Per ottenere ciò, si usa 'itertools.repeat ('CONSTANT')'. – flornquake