Bonjour,
J'aimerais faire un générateur de mot de passe en python, et l'utilisateur doit rentrer le nombre de caractères, le nombre de mot de passe à générer et si il y a des caractères spéciaux ou non.
Mais la boucle while x != cmbne boucle pas. Le générateur marche très bien, mais il génère toujours le même mot de passe si on lui dit d'en générer plusieurs !! Je ne vois pas l'erreur dans mon code pouvez vous m'aider ?
Le code :
# -*- coding:Latin-1 -*
import os
import time
from random import randint
lettres='abcdefghijklmnopqrstuvwxyz'
maj_lettres=lettres.upper()
car_spc='^<>$%*-'
chfs='0123456789'
nb=None
combien=None
i=0
x=0
pw=''
nb_a_random=25
print('Bienvenue dans le générateur de mot de passe.')
print("""Conseils :
*Utilisez au moins 8 caractères dans un mot de passe
*Utilisez majuscules, chiffres et caractères spéciaux pour un mot de passe fort
*Pour vous en souvenir, pensez à un mot pour chaque lettre""")
os.system('pause')
while not combien:
try:
cmb=int(input('Combien de mots de passe générer ? '))
break
except:
print('Veuillez renseigner votre choix !!')
while not nb:
try:
nb_car=int(input('\nCombien de caractères le mot de passe doit-il contenir ? '))
if nb_car < 1:
print('Le mot de passe doit contenir au moins 1 caractère !!')
nb=True
else:
nb2=None
while not nb2:
print('\nVeuillez renseigner votre choix par Y pour oui ou N pour non.')
chf=input('Le mot de passe doit-il contenir des chiffres ? ')
maj=input('Le mot de passe doit-il contenir des majuscules ? ')
spc=input('Le mot de passe doit-il contenir des caractères spéciaux ? ')
if chf.lower() != 'y' and chf.lower() != 'n':
print('\nVeuillez renseigner si vous voulez des chiffres ou non dans votre mot de passe.')
if maj.lower() != 'y' and maj.lower() != 'n':
print('\nVeuillez renseigner si vous voulez des majuscules ou non dans votre mot de passe.')
if spc.lower() != 'y' and spc.lower() != 'n':
print('\nVeuillez renseigner si vous voulez des caractères spéciaux ou non dans votre mot de passe.')
else:
break
break
except:
print('\nVeuillez renseigner votre choix.')
if maj.lower() == 'y':
lettres+=maj_lettres
nb_a_random+=25
if spc.lower() == 'y':
lettres+=car_spc
nb_a_random+=8
if chf.lower() == 'y':
lettres+=chfs
nb_a_random+=9
while x != cmb:
while i != nb_car:
car_random=randint(0,nb_a_random)
pw+=lettres[car_random]
i+=1
print('\n[{0}] : Votre mot de passe a été généré : {1}'.format(time.strftime('%H:%M:%S'),pw))
time.sleep(1)
x+=1
J'ai fait une erreur : en fait, la boucle boucle et met autant de mot de passe qu'on lui demande, mais toujours le même
une capture d'écran de ce que le code fait : http://prnt.sc/dagob3
Après avoir généré un mot de passe, tu ne réinitialises pas pw ni i.
Donc quand tu re-rentres dans ta boucle, i est déjà égal à nb_car, donc tu ne re-génères aucun mot de passe.
22 nov. 2016 à 17:53
22 nov. 2016 à 17:54
une capture d'écran de ce que le code fait : http://prnt.sc/dagob3