Forum >> Principianti >> Istruzione per riavviare un ciclo

Pagina: 1

Buongiorno a tutti, in questi ultimi giorni stavo provando a scrivere un piccolo programma sull'IDLE di Python per esercitarmi. Il programma è questo:
password_1=raw_input("Digita la prima password di accesso:")
while password_1 != "casa":
    print "Accesso negato"
    password_1=raw_input("Digita la prima password di accesso")
if password_1=="casa":
    print "Codice valido"
    password_2=raw_input("Digita la seconda password di accesso")
    while password_2 != "abcd":
        print "Accesso negato"
        password_2=raw_input("Digita la seconda password di accesso")
    if password_2=="abcd":
        print "Codice valido"
        password_3=raw_input("Digita la terza password di accesso")
        while password_3 != "12345":
            print "Accesso negato"
            password_3=raw_input("Digita la terza password di accesso")
        if password_3=="12345":
            print "Codice valido"
            print "Ora puoi accedere al sistema"
In pratica chiedo all'utente la prima password, se la password è sbagliata questa verrà richiesta fino a quando non verrà digitata quella corretta. Una volta che verrà inserita la password corretta verrà chiesta una seconda password, anche questa fino a che non sarà inserita correttamente. Una volta che anche la seconda password risulterà corretta ne verrà chiesta una terza e solamente se anche quest'ultima sarà esatta a questo punto il programma potrà terminare.

Fino a questo punto sono riuscito, ma quello che volevo provare a fare era un programma in cui il si ritorna a chiedere la password iniziale ogni volta che se ne sbaglia una (quindi sbagliando la seconda si ritornerà a chiedere la prima, per poi tornare alla seconda se la prima risulterà giusta, sbagliando alla terza si ritornerà alla prima, poi alla seconda se la prima sarà giusta e alla terza se risulterà esatta anche la seconda).

Mi rendo conto che può non avere molto senso il programma in se stesso, infatti il fatto che l'utente sbagliando un codice debba tornare alla password iniziale può apparire inutile in quanto il codice delle password precedenti rimane invariato e molte volte in vari programmi viene chiesta solamente una password, tuttavia aldilà del programma in questione come scrivevo inizialmente lo scopo era più che altro quello di esercitarmi e di capire se e in che modo eventualmente sia possibile riavviare un ciclo.

Da quello che mi sembrava di aver capito ciò si può fare con l'istruzione continue, ma provando ad utilizzarla non sono riuscito ad ottenere il risultato voluto, può darsi che non sia riuscito a collocarla nella riga esatta.

Qualcuno mi saprebbe aiutare?

Vi ringrazio per eventuali risposte e chiedo scusa se mi sono dilungato nello scrivere.














--- Ultima modifica di Linpyg91 in data 2017-08-13 22:43:15 ---
L' istruzione continue esegue la prossima iterazione del ciclo che la contiene, non può "riavviare" cicli più esterni.

Conviene scrivere un solo ciclo e usare un contatore per capire a che punto siamo arrivati. Ad ogni risposta giusta il contatore va incrementato, quando raggiunge 3 il ciclo termina, se si commette un errore va reimpostato a 0:
i = 0
while i < 3:

    ...istruzioni varie...

print "Ora puoi accedere al sistema"

*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione ***
L' istruzione continue esegue la prossima iterazione del ciclo che la contiene, non può "riavviare" cicli più esterni.

Conviene scrivere un solo ciclo e usare un contatore per capire a che punto siamo arrivati. Ad ogni risposta giusta il contatore va incrementato, quando raggiunge 3 il ciclo termina, se si commette un errore va reimpostato a 0:
i = 0
while i < 3:

    ...istruzioni varie...

print "Ora puoi accedere al sistema"


Grazie mille per l'aiuto. :) Ho seguito il tuo suggerimento ed ha funzionato.





Pagina: 1



Esegui il login per scrivere una risposta.