2017-07-31 1 views
0

J'essaie de faire une vérification de mot de passe simple avec des tentatives limitées.Vérification de mot de passe simple avec des tentatives limitées

Si l'utilisateur saisit un mot de passe incorrect, le programme vous invite à réessayer (3 tentatives). Après 3 tentatives infructueuses, les invites du programme ont atteint le nombre maximal de tentatives. Si l'utilisateur saisit le mot de passe correct, le programme "accordera l'accès".

import sys 
print (sys.version) 
pssw = '' 
attempt = 0 

print('Please key in your password.') 

while (pssw != "remember") and (attempt < 3):  
    pssw = input() 
    attempt = attempt + 1 

print ('No that is not correct. Try again.') 

if attempt == 3: 
    print ('Sorry you have reached maximum number of attempts') 
    break 

if (pssw == "remember"): 
    print('Access Granted!') 

Problème # 1

Attente: Après la saisie du mot de passe correct "Souviens-toi", le programme doit imprimer la sortie "Accès autorisé"

Mais la sortie du programme:

3.6.2 (v3.6.2:5fd33b5926, Jul 16 2017, 20:11:06) 
Please key in your password. 
remember 
No that is not correct. Try again. 
Access Granted! 

problème # 2

Attentes: Après avoir entré le mot de passe correct "Re membre » sur le dernier essai, le programme doit imprimer la sortie « Access Granted »

Mais la sortie du programme:

Please key in your password. 
test 
No that is not correct. Try again. 
test 
No that is not correct. Try again. 
remember 
No that is not correct. Try again. 
Sorry you have reached maximum number of attempts 

Qu'est-ce que je fais mal?

+1

Vous exécutez toujours 'print ('Non c'est incorrect. Réessayez.')'.En fait, votre sortie enregistrée ne correspond pas au code que vous avez posté. – quamrana

+0

Si vous avez besoin d'aide, vous devez mettre à jour la question afin que le code et la sortie du programme correspondent les uns aux autres. Ensuite, vous pouvez correctement indiquer comment vos attentes ne sont pas satisfaites par la sortie. Et puis nous pouvons vous aider. – quamrana

+0

Merci j'ai compris par la poste ci-dessous le flux était faux. L'attente était que le programme devrait exécuter «Non, ce n'est pas correct. Essayez à nouveau sur les 2 premières tentatives erronées. La dernière réitération erronée devrait s'exécuter: "Désolé, vous avez atteint le nombre maximum de tentatives". – ameque

Répondre

0

Je vais juste expliquer vos erreurs parce que quelqu'un a posté une autre approche de code. Je pense qu'il est important que vous compreniez vos erreurs et ne copiez pas simplement un autre code.

D'abord, la ligne break est incorrecte car une rupture ne peut pas être en dehors d'une boucle, utilisez sys.exit() à la place.

Problème # 1:

Si vous entrez le bon mot de passe votre programme va sortir de la boucle et exécuter les instructions suivantes:

print ('No that is not correct. Try again.') 

if attempt == 3: 
    print ('Sorry you have reached maximum number of attempts') 
    break 

if (pssw == "remember"): 
    print('Access Granted!') 

Il imprimera « Non, ce n'est pas correct . Réessayer.".

Vérifiez que la tentative est égale à 3. Ce n'est pas parce que vous avez entré le bon mot de passe lors de la première tentative.

Vérifiez si le mot de passe est égal à "Mémoriser". C'est, donc le programme affichera "Accès accordé".

Problème # 2:

Votre deuxième sortie est incohérente avec le code affiché.
Sortie normale pour le code affiché est:

Please key in your password. 
test 
test 
remember 
No that is not correct. Try again. 
Sorry you have reached maximum number of attempts 

C'est la sortie normale pour le code affiché, mais il est faux de toute façon. C'est parce que si vous tapez un mot de passe incorrect, la boucle se poursuivra et vous demandera à nouveau votre mot de passe sans rien imprimer.

+0

Merci d'expliquer ce que j'ai fait de mal et en mettant en évidence l'utilisation de 'sys.exit()' au lieu de 'break' j'ai réussi à éditer le code et fonctionne comme prévu. – ameque