2012-07-14 16 views
241

Me gustaría saber si existe un Python equivalente para la declaración del caso, como los ejemplos disponibles en VB.net o C#?¿Cuál es el equivalente de Python para una sentencia case/switch?

+2

La segunda pregunta no es un seguimiento, e incluso los seguimientos deben publicarse como preguntas separadas. Además de eso, está fuera de tema, y ​​debería ir en programmers.stackexchange.com. Y, tu primera pregunta es un duplicado. –

Respuesta

355

Si bien el official docs están dispuestos a no proporcionar el interruptor, he visto un solution using dictionaries.

Por ejemplo:

# define the function blocks 
def zero(): 
    print "You typed zero.\n" 

def sqr(): 
    print "n is a perfect square\n" 

def even(): 
    print "n is an even number\n" 

def prime(): 
    print "n is a prime number\n" 

# map the inputs to the function blocks 
options = {0 : zero, 
      1 : sqr, 
      4 : sqr, 
      9 : sqr, 
      2 : even, 
      3 : prime, 
      5 : prime, 
      7 : prime, 
} 

A continuación, se invoca el bloque de interruptores equivalentes:

options[num]() 

Esto comienza a desmoronarse si dependen en gran medida a través de la caída.

+12

El diccionario debe aparecer después de las definiciones de función – flexxxit

+0

@MortezaLSC, no necesita las comillas si está mapeando enteros para las funciones. –

+0

@Prashant Kumar, estoy usando Python 2.7.6 y luego obtuve el error! +1 – MLSC

Cuestiones relacionadas