[PIPython] if, else, elif

tiziano a work tiziano
Ven 19 Nov 2004 15:16:52 CET


mario rossi wrote:

>#Buon giorno a tutti, ho fatto delle prove con if elif
>ed else:
>#eccone il risultato. l'esercizio mi propone di
>scrivere un programma che chieda
>#una password e dia solo tre possibilità dopo di che
>stamperà: mi dispiace.
>
>print " PROVA PASSWORD "
>print " HAI A DISPOSIZIONE 3 TENTATIVI "
>a = 0
>password = 'enter'
>while a < 3:
>    a = a + 1    
>    dato = raw_input ( " DIMMI LA PASSWORD " )
>    if password != dato:
>        print " SBAGLIATO "
>    if dato == password: #se al posto di if metto elif
>il risultato non cambia
>        print " giusto"
>        
>else:
>    print " MI DISPIACE"
>    
>    
># intanto chiedo a voi se questa è la formula
>corretta; nel caso inizio con le
># domade: come si può notare ho fatto un commento ad
>if, in quanto a segiuto di
># una prova cambiando if in elif  il risultato
>all'esecuzione non cambia è cioè
># corretto in entrabi i casi,
>
In realtà è "più corretto" utilizzare elif, poiché nel caso si agiusto 
il primo if (la password inserita è sbagliata), non ha senso che venga 
controllao se la password è giusta!
In questo modo si risparmia tempo d'elaborazione.
In genere quando hai due condizioni che sono mutuamente escluse, come in 
questo caso, conviene mettere in if quella più probabile (visto che il 
primo if viene sempre eseguito), ed in elif, in ordine, quelli meno 
probabili. Così la maggior parte delle volte sarà sufficiente fare un 
solo controllo (il primo if, che sarà probabilmente vero), e gli altri 
elif non verranno presi in considerazione.

> l'atra magagna stà
>nell'ipotesi che l'utente indovini
># la password al primo o al secondo colpo.....; il
>programma non avendo concluso il
># il suo percorso continuerà a chiedere "dimmi la
>passwor" fino ad arrivare alla
># terza possibilità.
>  
>
Puoi utilizzare un comando 'break' per interrompere l'esecuzione del 
ciclo while (subito dopo print "giusto").

># Ora se ho capito bene if significa: ( nel nostro
>caso ) se password è diverso
># da dato,stampa " sbagliato".
># else significa: "nel caso" non hai indovinato stampa
>" mi dispiace" o
># comunque stampalo alla fine.Se non ci fosse else me
>lo stamperebbe sempre.
># elif: leggo che è un abbreviazione di else if. può
>essere tradotto in " se
>#  invece?".
>  
>
traduzione ottima. ;-)

># Un altra domanda riguarda questo messaggio che mi
>esce non sempre:
># In una finistra di avviso I/O warning:
># non ASCII found,yet no encoding declared,Add a line
>like
># to your file choose Ok to save file as.Edit your
>general option
># to silent this warning. Se non sbaglio mi chiede di
>salvare questo archivio,
># ma già ad ogni esecuzione mi salava con questo
>messaggio: source must be saved.
># ok to save.
>  
>
probabilmente stai utilizzando qualche carattere accentato nel tuo 
sorgente, magari in un commento?

># L'ultima: durante l'utilizzo di python per circa 1
>ora di seguito per prove, è andato in blocco 
># varie volte, quindi ho dovuto terminare l'operazione
>con task manager.
># Utilizzo win xp e la versione di python è la 2.3
>(l'ultima credo). E' normale? può capitare?
>  
>
strano, non ho consigli in merito

># Prossimamente installerò anche linux.( piu' avanti
>però, ho timore di far danni)
># Come di consueto vi rigrazio per l'attenzione e
>spero di non aver detto
># castronerie.
># ciao a tutti,    
>

non preoccuparti, ne dicono tutti (io compreso)... :)

ciao
tiziano



More information about the Python mailing list