While et for

mery-mery Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour a tous,
je voulais vous demandez une petite questions qui concerne un problème ou je me suis blocker . Je suis entrain de faire un programme qui consiste a demander le login et password ,mais j’aimerai bien ajouter que user a le droits juste pour 3 chance d’essai apres il affiche le programme un message.exemple: "vous avez dépasser les 3 chance le compte est blocker".
Je sais pas si j'ai étais très clair, enfin si quelqu'un a une idée qu'il me la fasse partager.
Merci beaucoup!
voici le code:

def login():
    while True:
        user = input("login")
        login=user
        if user == 'mery':
            break
        print("user faux")
    return user
login()
def password():
    while True:
        password =input("password: ")
        if password == 'mery123':
            print("hello Mery")
            break
        print("pass faux")
    return password
password()    

A voir également:

3 réponses

Utilisateur anonyme
 
Bonjour

Il va y avoir, plusieurs choses à modifier.
Dans un premier temps, je t’invite à réfléchir sur le fait que
while True:
fait boucler à l’infini
0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
Bonjour,

On dit : 'je voulais vous demander' et 'le compte est bloqué' ...

Si le mot de passe est faux, il faut compter le nombre d'essais, et si on dépasse 3, sortir du while en affichant un message

Un truc dans ce style là:
def password():
    n=3

    while True:
        password =input("Mot de passe : ")
        if password == 'mery123':
            print("hello Mery")
            break
        else:
            n -= 1
            if(n == 0):
                password = ''
                break
            print("Mot de passe faux, encore {} essai(s)".format(n))

    return password

passw = password()
if(passw == ''): print('\nCompte bloqué')
0
Utilisateur anonyme
 
Bonjour Phil.

Oui c’est une façon de faire, cela dit, jusque-là mery mery attend qu’on lui donne tout cuit une réponse à ses exercices.
Ce serait bien qu’il (elle ?) apprenne à concevoir les algorithmes en solo.
0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168 > Utilisateur anonyme
 
Bonjour Whismeril,

Tu as parfaitement raison, on essaie de donner des pistes, et ensuite on est tenté de donner un bout de code :-) :-)
Effectivement, il y des des trucs de base que mery mery devrait savoir, comme de mettre un return en fin de fonction et d'invoquer cette fonction sans récupérer le contenu du return dans une variable ...
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
En principe, les essais sont limités à N tentatives (ici 3) pour une combinaison d'identifiant et de mot de passe.

L'interaction avec le système gérant l'authentification :
  • ne devrait pas dire si c'est l'identifiant qui est erroné, le mot de passe ou les deux,
  • mais devrait compter une tentative consommée lorsque l'identifiant est erroné, le mot de passe ou les deux, en émettant un message, une fois l'identifiant et le mot de passe saisis : "Erreur : identifiant ou mot de passe faux, encore xxx essai(s) restant(s)".


Le fait que l'indication ne soit pas donnée sur lequel est faux, ou les deux, permet de renforcer la sécurité.

Aussi, je ne crois pas que cela ait beaucoup de sens de faire 2 fonctions, une pour l'identifiant et l'autre pour le mot de passe (surtout que la fonction password ne sait pas pour quel identifiant elle doit contrôler le mot de passe). C'est le couple identifiant et mot de passe qui doit être validé.

Enfin, tout ceci est bien joli pour faire joujou, mais très éloigné d'un véritable système d'authentification où il est exclu que les mots de passe soient en clair et qui plus est dans le code source.

Dal
0