Bonjour, je suis actuellement entrain de faire un programme qui va demender a l'utilisateur de rentrer un mot de passe qui doit avoir entre 5 et 10 caractère et minimum 2 chiffre.
J'arrive a peut près a tout faire le seul problème s'est que je ne sait pas comment faire pour vérifier dans mon code si il y a minimum 2 chiffre, merci d'avance pour votre aide.
def check(s):
s = s.lower() # permet de transformer pour le test les majuscules en minuscules
counter_char = 0 # compteur de caractères
counter_digit = 0 # compteur de chiffres
for char in s:
if char in ('0123456789'):
counter_digit += 1
counter_char += 1
test_1 = counter_digit >= 2
test_2 = counter_char >= 5 and counter_char <= 10
return test_1 and test_2
Le fait de faire un len(s) fera que tu parcoures deux fois la chaîne de caractères, car tu devras dans tout les cas compter le nombre d'entiers dans cette chaîne.
Le fait de faire un len(s) fera que tu parcoures deux fois la chaîne de caractères, car tu devras dans tout les cas compter le nombre d'entiers dans cette chaîne.
Il ne me semble pas que len parcoure la chaîne pour en calculer la taille. Celle-ci doit-être calculer à la création de l'objet (qui de plus n'est pas mutable), et donc un appel à len ne coûte rien, en plus d'être plus propre.
Effectivement, bien vu... Je simplifie le code en conséquence pour rendre le code plus logique
def check(s):
s = s.lower() # permet de transformer pour le test les majuscules en minuscules
counter_digit = 0 # compteur de chiffres
for char in s:
if char in ('0123456789'):
counter_digit += 1
test_1 = counter_digit >= 2
test_2 = len(s) >= 5 and len(s) <= 10
return test_1 and test_2
Pour confirmation, et pour les curieux, voici l'implémentation intéressante
What happens when you assign a new string to a variable like this one?
1
>>> s1 = 'abc'
The internal C function “PyString_FromString” is called and the pseudo code looks like this:
arguments: string object: 'abc'
returns: Python string object with ob_sval = 'abc'
PyString_FromString(string):
size = length of string
allocate string object + size for 'abc'. ob_sval will be of size: size + 1
copy string to ob_sval
return object
Each time a new string is used, a new string object is allocated.
Oui, ça fonctionne, mais ça reste un comportement pas toujours clair dû au fait que bool hérite d'int, je préférais rendre ça explicite. Mais c'est effectivement mieux avec le isdigit que j'avais oublié.
Les codes suivants sont plus en rapport avec la force python, alors que le PO recherche peut-être quelque chose de plus algorithmique. Alors l'utilisation de len ok, ils ont du voir cela comme base dans leur cours, mais sum, je ne pense pas...
Programme de mot de passe
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique