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

  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