Topic: if ed elif  (Letto 1435 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Coil

  • python erectus
  • ***
  • Post: 145
  • Punti reputazione: 0
    • Mostra profilo
if ed elif
« il: Luglio 18, 2007, 23:56 »
Programmo in python da circa 6 mesi ormai, ma non ho mai capito il perchè dell'esistenza dell'istruzione elif:

se questo blocco

if cond1:
elif cond2:
else:

è equivalente a

if cond1:
if cond2:
else:

a che serve elif?

Offline gennaro

  • python sapiens
  • *
  • moderatore
  • Post: 595
  • Punti reputazione: 0
    • Mostra profilo
Re: if ed elif
« Risposta #1 il: Luglio 19, 2007, 00:11 »
Quei due blocchi non sono affatto equivalenti... nel primo il test su cond2 viene eseguito solo se cond1 è falso, mentre nel secondo i test su cond1 e cond2 vengono sempre eseguiti entrambi... ti faccio un esempio... controlla se questi due programmi danno lo stesso risultato:

if  (3 == 3): print "primo test eseguito\n"
elif (2 != 3): print "secondo test eseguito\n"

if  (3 == 3): print "primo test eseguito\n"
if (2 != 3): print "secondo test eseguito\n"

Offline MiPnamic

  • python erectus
  • ***
  • Post: 128
  • Punti reputazione: 0
    • Mostra profilo
    • MiPnamic contaminated area | Comunicare; Conoscere; Crescere; Condividere;
Re: if ed elif
« Risposta #2 il: Luglio 19, 2007, 02:35 »
potremmo dire che "elif" è una "concatenazione di condizioni"

if condizione:
   conseguenza
elif condizione alternativa:
   conseguenza alternativa
else:
   conseguenza alternativa ultima

nel primo caso

if condizione:
    conseguenza
if condizione:
    conseguenza
else:
   conseguenza alternativa

spero di esser stato chiaro ^_^

Offline Coil

  • python erectus
  • ***
  • Post: 145
  • Punti reputazione: 0
    • Mostra profilo
Re: if ed elif
« Risposta #3 il: Luglio 19, 2007, 11:33 »
Capito, non me ne ero mai accorto ASD

Offline spaghetty

  • python erectus
  • *
  • moderatore
  • Post: 122
  • Punti reputazione: 0
    • Mostra profilo
Re: if ed elif
« Risposta #4 il: Luglio 26, 2007, 15:59 »
vedila cosi':

if cond1:
    do_something
elif cond2:
    do_something_else
else:
    another_stuff

e' in realta' equivalente a:

if cond1:
   do_something
else:
   if cond2:
        do_something_else
   else:
        another_stuff

in effetti elif e' solo come si dice in gergo "syntattic sugar" ... in pratica ti addolcisce solamente il codice facendoti risparmiare una riga di codice .... ma non ti da nessuna possibilita' in piu'

cia'