En ce momentGenshin ImpactValhallaBreath of the wildAnimal CrossingGTA 5Red dead 2
Liste des sujets
Exercice python
PasFortEnPython
Niveau 14
20 octobre 2020 à 13:35:04
Bonjour j'ai besoin d'aide pour un exo en python, la première partie de l'exo a été faite (ce qui est en spoil est la partie déjà réalisié) 3.1- Ecrire un programme qui saisit une chaîne de caractères « s » représentant un mot de passe. Le programme doit vérifier que « s » respecte les critères suivants : • Le mot de passe doit contenir un minimum de 4 et un maximum de 12 caractères. • Un mot de passe doit contenir des lettres minuscules, majuscules, chiffres et au moins 1 caractère non alphanumérique : = _ & ? # * $ @ { } + ( ) : , ; ! '' ' . e • Le mot de passe ne peut pas contenir des espaces. Si le mot de passe est valide, le programme affiche valide, sinon il affiche invalide 3.2- Le programme doit ensuite vérifier qu’il s’agit bien d’un utilisateur humain et non pas pas d’un ordinateur. Pour cela il génère aléatoirement une suite de chiffres et de lettres qu’il affiche à l’utilisateur en lui demandant de les saisir séparés avec un caractère spécial (le nombre de caractères est aléatoire entre 5 et 10 et le caractère spécial est généré aléatoirement aussi). Si la saisie correspond à ce qui est attendu alors le mot de passe est validé définitivement sinon un nouvel essai est proposé à l’utilisateur. Si le nombre d’essais est supérieur 10 alors l’utilisateur est rejeté définitivment.
Le code actuel :
tentative = 0
while tentative < 3:
no_alpha = ":=_&?#*$@{}+():,;!''.e"
min = "abcdefghijklmnopqrstuvwxyz"
mdp = input("Entrez votre mot de passe: ")
if len(mdp) >= 4 and len(mdp) <= 12:
min = [c for c in mdp if c in min]
maj = [c for c in mdp if c.isupper()]
numb = [c for c in mdp if c.isdigit()]
space = [c for c in mdp if c.isspace()]
no_alpha = [c for c in mdp if c in no_alpha]
if len(maj) > 0 and len(numb) > 0 and len(space) == 0 and len(no_alpha) > 0 and len(min) > 0:
print("Mot de passe valide")
break
print("Votre mot de passe doit contenir entre 4 et 12 caractères, dont au moins une majuste, une minuscule et un caractère non alphanumérique, il ne doit pas y avoir d'espace.")
tentative += 1
if tentative ==3:
print("Vous ne semblez ne pas avoir compris la consigne.")
break
Azerban
Niveau 16
20 octobre 2020 à 15:53:21
Voici le code pour la deuxième partie (je te laisse l'intégrer dans la première).
# https://www.jeuxvideo.com/forums/42-47-64608047-1-0-1-0-exercice-python.htm
# password_human.py
import random
import string
letters_digits = random.sample(string.ascii_letters + string.digits, random.randint(5, 10))
special_char = random.choice(string.punctuation)
counter = 0
while counter < 10:
user_result = input(f"Vous devez assembler les caractères `{' '.join(letters_digits)}` avec le caractère spécial `{special_char}` : ")
expected_result = special_char.join(letters_digits)
if user_result == expected_result:
print('Mot de passe validé définitivement.')
break
counter += 1
PasFortEnPython
Niveau 14
20 octobre 2020 à 18:45:57
Le 20 octobre 2020 à 15:53:21 Azerban a écrit : Voici le code pour la deuxième partie (je te laisse l'intégrer dans la première).
# https://www.jeuxvideo.com/forums/42-47-64608047-1-0-1-0-exercice-python.htm
# password_human.py
import random
import string
letters_digits = random.sample(string.ascii_letters + string.digits, random.randint(5, 10))
special_char = random.choice(string.punctuation)
counter = 0
while counter < 10:
user_result = input(f"Vous devez assembler les caractères `{' '.join(letters_digits)}` avec le caractère spécial `{special_char}` : ")
expected_result = special_char.join(letters_digits)
if user_result == expected_result:
print('Mot de passe validé définitivement.')
break
counter += 1
Merci pour tout Je vais prendre le temps de voir ça en détail