2012-07-14 10 views
241

Mi piacerebbe sapere, esiste un equivalente Python per l'istruzione case come gli esempi disponibili su VB.net o C#?Qual è l'equivalente Python per un'istruzione case/switch?

+2

La seconda domanda non è un follow-up, e anche i follow-up devono essere postati come domande separate. Inoltre, è fuori tema e dovrebbe andare su programmers.stackexchange.com. E la tua prima domanda è un duplicato. –

risposta

355

Mentre il official docs è felice di non fornire l'interruttore, ho visto uno solution using dictionaries.

Ad esempio:

# 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, 
} 

Poi il blocco di commutazione equivalente viene richiamato:

options[num]() 

Questo comincia a cadere a pezzi se si dipendono fortemente cadere.

+12

Il dizionario deve venire dopo le definizioni di funzione – flexxxit

+0

@MortezaLSC, non sono necessarie le virgolette se si stanno mappando gli interi alle funzioni. –

+0

@Prashant Kumar, sto usando python 2.7.6 e poi ho avuto un errore! +1 – MLSC

Problemi correlati