Boucle while

Résolu/Fermé
imnos Messages postés 8 Date d'inscription mercredi 11 novembre 2015 Statut Membre Dernière intervention 6 juillet 2021 - 5 août 2016 à 17:56
 roudoudou - 6 août 2016 à 07:32
Bonjour,
Je cherche à programmer un petit logiciel de génération de mot de passe aléatoire et pour cela, j'ai eu recourt à la boucle while. A la fin de chaque cycle, elle demande à l'utilisateur si le mot de passe lui convient. Si ce dernier répond oui, la boucle s’arrête grâce à l'instruction break. Malheureusement elle s'arrête également si l'utilisateur répond oui. Après de nombreuses recherches et essais, je n'ai toujours pas trouvé la solution. Quelqu’un pourrait-il m'aider? Le code est le suivant:


# coding=utf-8

from random import choice
import string

b = input('Nombres de caracteres: ')

c = input('Le mot de passe contient-il des caracteres speciaux? [O/n] ' )

while True:
print(choice(string.ascii_letters), end='')
for i in range (int(b)-1):
if c == 'Oui' or 'oui' or 'O' or 'o' or '':
print(choice( string.ascii_letters + string.digits + string.punctuation), end='')
elif c == 'n' or 'N' or 'Non' or 'non':
print (choice(string.ascii_letters + string.digits), end='')
print(' ')
d = input('Le mot de passe vous convient-il? [O/n] ')
if d == 'Oui' or 'oui' or 'O' or 'o' or '':
break


Merci beaucoup

1 réponse

unknown_programmer Messages postés 1549 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 9 janvier 2018 261
5 août 2016 à 18:29
Bonjour,

il faut mettre ceci:
    if d == 'Oui' or d == 'oui' or d == 'O' or d == 'o' or d == '':
        break


il faut aussi changer les conditions dans la boucle for.
0
imnos Messages postés 8 Date d'inscription mercredi 11 novembre 2015 Statut Membre Dernière intervention 6 juillet 2021
5 août 2016 à 20:16
Merci beaucoup, maintenant ça fonctionne
0
roudoudou > imnos Messages postés 8 Date d'inscription mercredi 11 novembre 2015 Statut Membre Dernière intervention 6 juillet 2021
6 août 2016 à 07:32
On peut abréger ceci en utilisant un tuple :)

if d in('Oui', 'oui', 'O', 'o', '') :
break
0