2012-01-03 25 views
7

Soy nuevo en Python. En realidad, implementé algo usando Java como se muestra a continuación.Infinite for loop en Python

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

    case c2: statements 


    default: statement 
} 
} 

¿Cómo implemento esto en Python?

Respuesta

12

Uso bucle while:

while True: 

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

Usted puede utilizar

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

o

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

Normalmente, es más implícito usar el booleano 'True' en lugar de un entero si estamos hablando de bucles infinitos. De esta forma, la intención es más clara y más fácil de depurar (¿quién puede decir que el valor de 'var' puede no cambiar con el tiempo?). – Makoto

+0

Es verdad, y usar el booleano es (probablemente) la manera bendita. Ese es solo otro ejemplo de lograr lo mismo. 'var' puede cambiar, pero eso depende también del desarrollador para no cambiarlo si decide ir por ese camino. ;-) –

+1

Pero ¿por qué 'var' en absoluto? Si el punto es tener un valor que siempre es igual a 1 para crear un ciclo infinito, ¿por qué no simplemente decir 'mientras 1 == 1'? Y una vez hecho esto, es absurdo no escribir 'while True'. – Ben

1

Formalmente, no hay switch declaración en Python; es una serie de declaraciones anidadas if-elif-else.

Los bucles infinitos se logran mediante la instrucción while True.

Todos juntos:

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

Tenga cuidado de que no haya una caída en 'if/elif/else' como en el 'switch' – dcrosta

1

Si usted está buscando una manera de repetir infinitamente en Python puede utilizar la función itertools.count() como un bucle. http://docs.python.org/py3k/library/itertools.html#itertools.count

+0

Esto parece útil para infinitas expresiones del generador como '('CONSTANT' para i en itertools.count (0, 0)) 'como un argumento para las funciones que esperan un generador. No tiene que definir una función separada que tenga el ciclo True true. – hobs

+0

@hobs Para lograr eso, usaría 'itertools.repeat ('CONSTANT')'. – flornquake