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 :

Probleme RLE encode/ decode


Sujet :

Python

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2013
    Messages : 23
    Points : 4
    Points
    4
    Par défaut Probleme RLE encode/ decode
    Bonjour,
    Il m'a été demandé d'écrire une fonction RLE encoding qui prend une chaine de caractères et l'encode au format RLE

    exemple :
    RLEencode("AAABBCCCC")
    >>> "3A2B4C"

    et d'ecrire une fonction RLEdecode ben qui fait l'inverse.

    J'ai réussi a faire la RLEdecode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     i = 0
        res = ""
        while i < len(x):
            if len(x) == len (x):
                res = res + int(x[i]) * str(x[i+1])
            i += 2
        return res
    mais je bug totalement sur la RLEencode est ce que quelqu'un pourrait m'indiquer comment m'en sortir avec ce que j'ai déja ecrit a savoir :
    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
     
    def RLEencode(x):
        i = 0 
        res = ""
        prov = 0
        while i < len(x):
            if x[i] == "A":
                prov = prov + 1
                res = res + str(max(prov,0)) + "A" 
            elif x[i] == "T":
                res = res + str(x.count("T")) + "T"
            elif x[i] == "C":
                res = res + str(x.count("C")) + "C"
            elif x[i] == "G":
                res = res + str(x.count("G")) + "G"
            i += 1
        return res
    Merci !!

  2. #2
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 609
    Points : 2 073
    Points
    2 073
    Par défaut
    Le lecteur bugue sur la lecture.
    Ce serait mieux de reposter avec les balises de code (#)...
    Pas d'aide par mp.

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 474
    Points : 9 274
    Points
    9 274
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Oui, du code Python sans les indentations n'est pas utilisable: utiliser les tags de code ('#' en haut et à droite de la fenêtre d'édition)

    Voilà quelques idées:

    encodage de, par exemple, x="AAABBCCCC":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    from itertools import groupby
     
    y = ""
    for car, ch in groupby(x):
        y += "%d%s" % (len(list(ch)), car)
    print y
    "3A2B4C"
    Ce code utilise groupby du module itertools qui a un effet intéressant: il regroupe les lettres. Par exemple: "AAABBCCCC" => ["AAA", "BB", "CCCC"]

    décodage du y précédent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    r = ""
    for n, car in zip(y[0::2], y[1::2]):
        r += car*(int(n))
    print r
    "AAABBCCCC"
    la fonction zip permet de présenter, à chaque boucle for, un caractère de chaque chaine. Or, y[0::2] donne "324" et y[1::2] donne "ABC". On retrouve donc les associations "3" avec "A", etc...
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2013
    Messages : 23
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Bonjour,

    Oui, du code Python sans les indentations n'est pas utilisable: utiliser les tags de code ('#' en haut et à droite de la fenêtre d'édition)

    Voilà quelques idées:

    encodage de, par exemple, x="AAABBCCCC":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    from itertools import groupby
     
    y = ""
    for car, ch in groupby(x):
        y += "%d%s" % (len(list(ch)), car)
    print y
    "3A2B4C"
    Ce code utilise groupby du module itertools qui a un effet intéressant: il regroupe les lettres. Par exemple: "AAABBCCCC" => ["AAA", "BB", "CCCC"]
    Merci beaucoup pour cette réponse rapide. J'ai toute fois une question : on est au début de notre cours, je comprends bien tout le code sauf
    A quoi cela correspond ?

  5. #5
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 474
    Points : 9 274
    Points
    9 274
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par chlowecita Voir le message
    je comprends bien tout le code sauf
    A quoi cela correspond ?
    C'est du formatage des chaines de caractères. Voir ici: http://docs.python.org/2/library/std...ing-operations.

    C'est remplacé depuis peu par ".format(...): http://docs.python.org/2/library/str...-string-syntax.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

Discussions similaires

  1. Json encode / decode
    Par Twubi dans le forum C++
    Réponses: 6
    Dernier message: 21/07/2009, 10h26
  2. Encode / Decode Deflate
    Par Chad11 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/07/2008, 21h56
  3. probleme d'encoding XML
    Par zoulai dans le forum iReport
    Réponses: 0
    Dernier message: 11/12/2007, 11h29
  4. Probleme d'encode XML et java
    Par ujoodha dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 25/10/2005, 09h24
  5. Encode - Decode : probleme, résultats différent.
    Par barok dans le forum Administration
    Réponses: 1
    Dernier message: 26/08/2005, 10h43

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