besoin d'Aide : Python our programmer un mot de passe

besoin d'Aide : Python our programmer un mot de passe - Python - Programmation

Marsh Posté le 10-12-2014 à 18:29:48    

Bonjour !  
 
Voila je suis en terminal et je fais ISN  
J'ai un petit projet à faire sur le thème du mot de passe.... j'ai presque terminé le programme mais j'ai un souci !  
Les conditions sont : -le mot de passe doit faire plus de 4 caractères  
                             -et moins de 10
                             -il doit avoir 1 chiffre et 1 majuscule au minimum

Je travail sur Python et voilà ce que j'ai fait :
 
#conditions
def test (mdp) :
 satisfaisant = True
 
 if not len (mdp) > 4 :
  print ("mot de passe trop court" )[b]

  satisfaisant = False
   
 if not len (mdp) < 10 :
  print ("mot de passe trop long" )
  satisfaisant = False
   
 chiffre_present = False
 i = "1234567890"
 for c in mdp :
  if c in i :
   chiffre_present = True
  else :
   chiffre_present = False
   satisfaisant = False
   print ("un chiffre minimum" )
 
 if not () :
  i = "AZERTYUIOPQSDFGHJKLMWXCVBN"  
  for c in mdp :
   if not c in i :
    satisfaisant = False
  print ("une majuscule minimum" )
   
 return satisfaisant  
 
 
#Fonction principale
mdp = input ("entrez un mot de passe : " )
 
while test(mdp)==False :
 print ("Erreur dans le mot de passe" )
 mdp = input ("entrez un nouveau mot de passe : " )
 
#Si toutes les conditions sont bonnes :
else :
 mdp2 = input ("répetez le mot de passe : " )
 while mdp != mdp2 :  
  print ("mot de passe incorrect" )  
  mdp2 = input ("mot de passe non identique réesseyer : " )
 else :
  print ("Mot de passe correct. Bravo !" )
 [/b]
Tout fonctionne sauf pour les chiffres et majuscules .... j'ai essaye plusieurs choses mais au finale soit il ignore la commande  ; soit il vérifie chaque caractère du mot de passe un par un  et pour chacun d'eux il écrit "un chiffre minimum"
 
Bref j'ai grand besoin de votre aide rapidement !!!

Reply

Marsh Posté le 10-12-2014 à 18:29:48   

Reply

Marsh Posté le 10-12-2014 à 20:42:41    

Effectivement sur la fin tu t’embrouilles un peu les pinceaux:
 

Code :
  1. chiffre_present = False
  2. i = "1234567890"
  3. for c in mdp :
  4.   if c in i :
  5.    chiffre_present = True


jusqu'ici tout va bien ;)
 

Code :
  1. else :
  2.    chiffre_present = False
  3.    satisfaisant = False
  4.    print ("un chiffre minimum" )


Ton else correspond au if précédent. Le problème c'est que ton if est exécuté a chaque caractere de ton password.
Donc si jamais ton 1er caractère n'est pas un chiffre, tu tombes dans ton "else" et déclare que le password est mauvais.
Il faut faire ce test une fois que tu as vérifié tous les caractères donc APRES le for:

Code :
  1. chiffre_present = False
  2. i = "1234567890"
  3. # on test tous les caracteres du password
  4. for c in mdp :
  5.   if c in i :
  6.    chiffre_present = True
  7. # une fois ca fait on regarde si il y a un chiffre ou non
  8. if not chiffre_present:
  9.    satisfaisant = False
  10.    print ("un chiffre minimum" )


 
 

Code :
  1. if not () :

 
oulla t'as voulu faire quoi la ? car not () c'est un truc qui renvoie TOUJOURS True, donc ca sera toujours le cas.
Bref ton if ne sert a rien.

Code :
  1. i = "AZERTYUIOPQSDFGHJKLMWXCVBN" 
  2.   for c in mdp :
  3.    if not c in i :
  4.     satisfaisant = False
  5.   print ("une majuscule minimum" )


Pour les majuscules c'est exactement le même code que pour les chiffres. (d'ailleurs si tu réfléchies un peu tu peux tester les 2 dans la même boucle for au lieu d'en faire 2 a la suite)
 
Une fois que tu auras fixé ca je pense que ca sera bon ;)

Reply

Marsh Posté le 10-12-2014 à 20:56:15    

Ok je vois oui pour majuscule c'était juste une autre idée mais elle était pire que l'ancienne ....
 
j'ai essayé ce que avec tes modifs et j'ai repris l'idée pour les majuscules et ça marche très bien en effet merci beaucoup :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed