While et for

Fermé
mery-mery Messages postés 11 Date d'inscription samedi 2 avril 2022 Statut Membre Dernière intervention 8 mai 2022 - 8 mai 2022 à 19:03
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 9 mai 2022 à 12:50
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

Whismeril Messages postés 19034 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 2 mai 2024 931
8 mai 2022 à 19:10
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 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
Modifié le 9 mai 2022 à 10:42
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
Whismeril Messages postés 19034 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 2 mai 2024 931
9 mai 2022 à 12:02
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 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178 > Whismeril Messages postés 19034 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 2 mai 2024
9 mai 2022 à 12:50
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 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
Modifié le 9 mai 2022 à 12:20
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