Oppure

Loading
12/05/10 18:33
Kowalski
Salve a tutti, ho trovato un semplice esercizio da fare cioè il programma mi chiede l'inserimento di una password, se è esatta mostra il messaggio 'Welcome in' altrimenti mi richiede di inserirne un'altra fino ad un massimo di 3 tentativi. Ora vi posto il codice, premetto che sono riuscito a farlo, voglio solo sapere un modo per scriverlo più chiaro perché il mio non lo vedo come un 'bel' codice.

print "Inserisci la password, hai 3 tentativi"
passw=raw_input('Inserisci password: ')
if passw=='ciao':
    print 'Welcome in'
else:
    print 'Errata'
    passw=raw_input('Reinserisci password: ')
    if passw=='ciao':
        print 'Welcome in'
    else:
        print 'Errata'
        passw=raw_input('Reinserisci password: ')
        if passw=='ciao':
            print 'Welcome in'
        else:
            print 'Tentativi terminati'


C'è troppa ridondanza e vorrei evitarla.
Grazie in anticipo:)
aaa
12/05/10 20:24
GuglielmoS
Ti conviene usare un ciclo, perchè se per esempio un giorno decidessi di mettere come limite di tentativi non più 3 ma 6, ti ritroveresti a dover scrivere altri if e codice doppio.
Una versione un pò più corretta che dovrebbe andare senza problema potrebbe per esempio essere questa:
print "Hai tre tentativi..."

tentativi = 3
passwordEsatta = False
passwordScelta = "Ciao"

while tentativi > 0 and not passwordEsatta:
    passw=raw_input('Inserisci password: ')
    if passw == passwordScelta:
        passwordEsatta = True
    else:
        print "Password errata!!!"
        tentativi -= 1
    
if passwordEsatta:
    print "Welcome"
else:
    print "Tentativi terminati"
aaa
12/05/10 20:38
Kowalski
E' infatti il mio problema era proprio il fatto di scrivere un codice così lungo e se vogliamo anche inutile...comunque grazie mille per la risposta ;)
aaa