IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Algorithme sous Python


Sujet :

Python

Vue hybride

Prieur21130 Algorithme sous Python 02/01/2014, 18h30
Golgotha Pour savoir si la chaine est... 02/01/2014, 18h52
mont29 Heeeu… pour savoir si la... 02/01/2014, 19h48
Prieur21130 Bonsoir mont29, Merci, la... 02/01/2014, 19h58
Prieur21130 Bonsoir Golgotha , Excuse... 02/01/2014, 19h50
Clodion Bonsoir, En premier il... 02/01/2014, 20h03
Prieur21130 Bonsoir Clodion, Merci de... 02/01/2014, 20h09
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2014
    Messages : 5
    Par défaut Algorithme sous Python
    Bonjour à tous,

    Voilà je post pour la première fois sur ce forum, mais les différents topics m'ont déjà pas mal aidé sur différents problèmes.

    Que je me présente, je me nomme Sébastien et je suis Lycéen, en terminale S. Si je post aujourd'hui, c'est parce que je n'ai pas trouvé sur le forum la réponse à mon problème.

    Donc, j'ai à faire un algorithme pour un projet avec ma spécialité au Lycée (spé ISN pour ceux qui connaissent.), ce projet est un algorithme de mot de passe qui doit effectuer les opérations suivantes :
    - Demander d'entrer un mot de passe (ça c'est fais, j'y arrive...)
    - Vérifier si le mot de passe contient entre 6 et 10 caractères. (réussi aussi)
    - Vérifier si le mdp contient au moins une lettre (et la, ça coince)
    - Vérifier si le mdp contient au moins un chiffre (j'ose même pas y penser)
    - Vérifier que le mdp ne contient aucun accent (j'y pense encore moins)
    - Demander à retaper le mot de passe (ça, c'est dans mes cordes)
    - Vérifier si les deux mots de passe correspondent (ça devrait le faire)

    Maintenant que l'énoncé est là, j'aimerais savoir comment serait il possible de faire pour vérifier la présence de lettre et chiffre ainsi que l’absence d'accent. Surtout que je cherche depuis plus de 3 semaines et j'ai utiliser tout ce que je pouvais pour trouver et ce n'est pas encore ça ...

    PS: Je doit faire cet algorithme sous AmienPython ou IDLE (On a que ça au lycée.)

    Merci d'avance à ceux qui auront des idées !
    Un lycéen en détresse..

  2. #2
    Membre extrêmement actif
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Billets dans le blog
    1
    Par défaut
    Pour savoir si la chaine est vide ou pas :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    len(passwd) > 0

    Pour savoir si un nombre se cache dans la chaine :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    len(set([d for d in "0123456789"]).intersection(passwd))
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  3. #3
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Heeeu… pour savoir si la chaîne est vide, il suffit de faire un test booléen (if & co), une chaîne vide est la seule chaîne évaluée à False…

    Quant à savoir s’il y a un nombre dans une chaîne… if set("0123456789").intersection(set(passwd)), voire if set("0123456789") & set(passwd), c’est plus simple.

    Si tu veux vérifier qu’il n’y a que les caractères autorisés, set(passwd) - set("0123456789abcdefg...") devrait marcher, l’ensemble renvoyé contient tous les caractères non-autorisés (non listés dans la deuxième chaîne), donc s’il est vide (évalué à False) c’est bon*!

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2014
    Messages : 5
    Par défaut
    Citation Envoyé par mont29 Voir le message
    Heeeu… pour savoir si la chaîne est vide, il suffit de faire un test booléen (if & co), une chaîne vide est la seule chaîne évaluée à False…

    Quant à savoir s’il y a un nombre dans une chaîne… if set("0123456789").intersection(set(passwd)), voire if set("0123456789") & set(passwd), c’est plus simple.

    Si tu veux vérifier qu’il n’y a que les caractères autorisés, set(passwd) - set("0123456789abcdefg...") devrait marcher, l’ensemble renvoyé contient tous les caractères non-autorisés (non listés dans la deuxième chaîne), donc s’il est vide (évalué à False) c’est bon*!
    Bonsoir mont29,

    Merci, la il vérifie bien si j'ai au moins un chiffre dans ma chaine mdp. Je vais tester avec les lettres pour voir si ça fonctionne ensemble.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2014
    Messages : 5
    Par défaut
    Bonsoir Golgotha ,

    Excuse moi, mais je vois pas où tu veut que je mette ce que tu m'as proposé. Pour l'instant ce que j'ai et qui marche, c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> print"Saisir mot de passe :"      
    >>> mdp=raw_input()                   
    >>> if (6<=len(mdp<=10):           
    >>>____test=True
    >>> if test==True:
    >>>____print mdp
    C'est ce qui fonctionne. Je voulais savoir comment je peut faire pour vérifier que mon mdp contient bien au moins une lettre et au moins un chiffre.
    J'ai essayé ça, mais ça ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> lettres['abcdefghijklmnopqrstuvwxyz']
    >>> chiffres['0123456789']
    >>> accents['àäâ...üûù']
    >>> if not mdp in lettres:
    >>> ____test=False
    >>> if not mdp in chiffres:
    >>> ____test=False
    PS: Merci d'voir répondu si vite !

  6. #6
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Bonsoir,

    Citation Envoyé par Prieur21130 Voir le message
    Bonsoir Golgotha ,

    Excuse moi, mais je vois pas où tu veut que je mette ce que tu m'as proposé. Pour l'instant ce que j'ai et qui marche, c'est :

    >>> print"Saisir mot de passe :"
    >>> mdp=raw_input()
    >>> if (6<=len(mdp<=10):
    >>>____test=True
    >>> if test==True:
    >>>____print mdp

    C'est ce qui fonctionne. Je voulais savoir comment je peut faire pour vérifier que mon mdp contient bien au moins une lettre et au moins un chiffre.
    J'ai essayé ça, mais ça ne fonctionne pas :

    >>> lettres['abcdefghijklmnopqrstuvwxyz']
    >>> chiffres['0123456789']
    >>> accents['àäâ...üûù']
    >>> if not mdp in lettres:
    >>> ____test=False
    >>> if not mdp in chiffres:
    >>> ____test=False

    PS: Merci d'voir répondu si vite !
    En premier il serait bien de mettre le code entre balises "#" (en haut à droite de la fenêtre d'édition).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> lettres['abcdefghijklmnopqrstuvwxyz']
    Donne une erreur en Python. Il manque "=" entre la variable et la valeur…
    PS: pourquoi mettre ceci dans une liste?

    D'autre part, l'erreur fondamentale est dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> if not mdp in lettres:
    Ici, vous demandez à Python de vérifier que mdp n'est pas dans lettres.
    Le problème est que mdp est une chaîne de caractère, pas un caractère simple…

    La solution est de prendre chaque caractère du mot de passe et de tester la présence de chiffres ou de lettres pour chacun de ces caractères.
    C'est ce qu'ont essayé de te montrer Golgotha et mont29 de manière concise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>> lettres='abcdefghijklmnopqrstuvwxyz'
    >>> def a_lettres(mdp):
    	res = False
    	for car in mdp:
    		if car in lettres:
    			res = True
    	return res
     
    >>> a_lettres("coucou")
    True
    >>> a_lettres("123456")
    False
    >>>
    Ici, les étapes apparaissent un peu plus…

    Clodion

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2014
    Messages : 5
    Par défaut
    Bonsoir Clodion,

    Merci de ta réponse et merci de tes remarques sur mes erreurs, je pourrais ainsi ne plus les faire.
    Comme tu la dit, les messages précédents m'ont permis de résoudre mon problème.

    Je profite donc du post, pour ne pas en faire un double, pour remercier tout le monde d'avoir répondu si rapidement. J'ai pu enfin réussir ce qui me prends la tête depuis 3 semaines.

    Merci à tous !

  8. #8
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 060
    Par défaut
    Autre solution, ça évite de se taper de la chaîne brute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> from string import ascii_lowercase, digits
    >>> accepted = ascii_lowercase+digits
    >>> accepted
    'abcdefghijklmnopqrstuvwxyz0123456789'
    >>> passwd = "testsansaccents"
    >>> all([1 if char in accepted else 0 for char in passwd])
    True
    >>> passwd = "jésuisunechaîneavecaccents"
    >>> all([1 if char in accepted else 0 for char in passwd])
    False

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recherche d'algorithme de hough sous python
    Par Leanaa dans le forum Programmation multimédia/Jeux
    Réponses: 6
    Dernier message: 22/06/2012, 10h09
  2. Decomposé un fichier XML en plusieurs fichiers XML sous python
    Par elhout dans le forum Général Python
    Réponses: 6
    Dernier message: 12/03/2007, 14h20
  3. Midi sous Python
    Par pfeuh dans le forum Général Python
    Réponses: 1
    Dernier message: 14/11/2006, 11h45
  4. Fonction addslashes sous Python ?
    Par ecocentric dans le forum Général Python
    Réponses: 2
    Dernier message: 28/01/2006, 18h27
  5. Existe-t-il un rad sous python?
    Par sloshy dans le forum EDI/RAD
    Réponses: 6
    Dernier message: 03/10/2005, 09h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo