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 :

Programmation


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    consultant informatique freelance
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tchad

    Informations professionnelles :
    Activité : consultant informatique freelance
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Par défaut Programmation
    Bonsoir tous le monde !

    J'ai un souci, votre aide est la bienvenue. Le problème est la suivant: Je voulais écrire un programme python qui test si une liste de mot pris dans un alphabet est un code. Pour q'une liste de mot soit un code il faut remplir deux condition :
    1) if faut que les élément de chaque mot de la liste appartiennent à l'alphabet;
    2) aucun mot ne doit être le préfixe d'un autres dans la liste.
    J'ai réussi a faire le petit 1)
    voici le code source qui n'est pas très optimale mais pour débutant ça passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #pour stocker l'alphabet
    alphabet = ""
     
    alphabet1 = input("entrer l'alphabet :")
    alphabet = alphabet1
    #le code est composé d'un ensemble de mot separer par un space
    code = input("entrer une serie de mot separer par un space : ")
     
    #on transforme l'ensemble de code en une liste
    nouveau_code = code.split()
    print(nouveau_code)
     
    drapeau = 1 #on declare un boolean pour test
     
    for i in nouveau_code: #on parcours toute la liste nouveau_code 
        for j in i:        #on parcours chaque element du mot de la liste
            if j not in alphabet: #on verifie est-ce que l'element n'appartient pas à l'alphabet
                drapeau = 0     #si oui on met drapeau à 0
    if drapeau == 1: #si oui alors c'est un code 
        print("Le mot {} est un code".format(nouveau_code))
    else: #sinon ce n'est pas un code
        print("Le mot {} n'est un alphabet desolé !!! ".format(nouveau_code))
    Voici quelques tests :
    $ python3 alphabets.py
    entrer l'alphabet :01
    entrer une serie de mot separer par un space : 01011 100110 0110111
    ['01011', '100110', '0110111']
    Le mot ['01011', '100110', '0110111'] est un code
    deuxième teste
    $ python3 alphabets.py
    entrer l'alphabet :01
    entrer une serie de mot separer par un space : 102 666 888
    ['102', '666', '888']
    Le mot ['102', '666', '888'] n'est un alphabet désolé !!!

    Mais la question petit 2) m'a vraiment tapé.
    Merci d'avance pour votre aide !!!

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Pour le préfixe tu peux utiliser la méthode startswith(), par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    >>> l = ['10110', '00101', '101']
    >>> for i in l:
    ...     for j in l:
    ...             if i.startswith(j):
    ...                     print("%s est prefixe de %s" %(j, i))
    ... 
    10110 est prefixe de 10110
    101 est prefixe de 10110
    00101 est prefixe de 00101
    101 est prefixe de 101
    >>>
    Il faudra aussi éviter les cas où i égale j, ça je te laisse faire.

  3. #3
    Membre actif
    Homme Profil pro
    consultant informatique freelance
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tchad

    Informations professionnelles :
    Activité : consultant informatique freelance
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Pour le préfixe tu peux utiliser la méthode startswith(), par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    >>> l = ['10110', '00101', '101']
    >>> for i in l:
    ...     for j in l:
    ...             if i.startswith(j):
    ...                     print("%s est prefixe de %s" %(j, i))
    ... 
    10110 est prefixe de 10110
    101 est prefixe de 10110
    00101 est prefixe de 00101
    101 est prefixe de 101
    >>>
    Il faudra aussi éviter les cas où i égale j, ça je te laisse faire.
    Ok merci beaucoup je crois que ça marche. Voici les modification que j'ai apporté au niveau du code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    #pour stocker l'alphabet
    alphabet = ""
     
     
    alphabet1 = input("entrer l'alphabet :")
    alphabet = alphabet1
    #le code est composé d'un ensemble de mot separer par un space
    code = input("entrer une serie de mot separer par un space : ")
     
    #on transforme l'ensemble de code en une liste
    nouveau_code = code.split()
    print(nouveau_code)
     
    drapeau = 1 #on declare un boolean pour test
     
    for i in nouveau_code: #on parcours toute la liste nouveau_code 
    	for j in i:        #on parcours chaque element du mot de la liste
    		if j not in alphabet: #on verifie est-ce que l'element n'appartient pas à l'alphabet
    			drapeau = 0	 #si oui on met drapeau à 0
    	for l in nouveau_code: #on parcours toute la liste nouveau_code
    		if i.startswith(l): #on determine si j est prefixé de i
    			if i == l: #Lorsque i=j on contine
    				continue
    			drapeau = 0
     
     
    if drapeau == 1: #si oui alors c'est un code 
    	print("Le mot {} est un code".format(nouveau_code))
     
    else: #sinon ce n'est pas un code
    	print("Le mot {} n'est un alphabet desolé !!! ".format(nouveau_code))
    Voici quelques tests

    python3 alphabets.py
    entrer l'alphabet :ab
    entrer une serie de mot separer par un space : abbb baaaa aaaab bbbba
    ['abbb', 'baaaa', 'aaaab', 'bbbba']
    Le mot ['abbb', 'baaaa', 'aaaab', 'bbbba'] est un code

    python3 alphabets.py
    entrer l'alphabet :ab
    entrer une serie de mot separer par un space : ab abaa baaa aab aabbba
    ['ab', 'abaa', 'baaa', 'aab', 'aabbba']
    Le mot ['ab', 'abaa', 'baaa', 'aab', 'aabbba'] n'est un alphabet dessolé !!!
    Je sais pas si j'ai bien gérer le cas ou i=j mais ça marche bien Merci VinsS.

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

Discussions similaires

  1. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  2. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  3. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  4. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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