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 :

HELP CHAINE DE CARACTÈRE !


Sujet :

Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut HELP CHAINE DE CARACTÈRE !
    Bonjour a tous,

    j'ai crée un script dans lequel je peux rentrer un motif qui va être rechercher dans une séquence. Cependant je voudrais pouvoir entrer un motif de plus ou moin de 2 caractères (ex TTTT ou AAA au lieu de seulement AG ), c'est à dire sans avoir besoin de définir au préalable y[0] et y[1] et seq1[i] ou seq1[i+1], mais qu'il reconnaisse de seq1[i] à seq[i+ toutes les caractères de y]. Je ne sais pas si c'est très clair mais j'espère que quelqun pourra m'aider!!
    Merci !!!
    voici le script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    seq1=str("ACGGTAGAGAGAGAGTTT")
    def ou(seq1):
    	y=str(input("Entrez un motif :"))
    	x=0 
    	print("Il y a ",seq1.count(y)," répétitions ", y, " dans cette séquence")
    	for i in range(len(seq1)):
    		if (seq1[i]==y[0] and seq1[i+1]==y[1]):
    			x=x+1
    			print("La répétition ",x, "se trouve en position ", i+1) 
    	return(seq1)
    ou(seq1)

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Pourquoi ne pas parcourir une seule fois le texte ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    seq1 = "ACGGTAGAGAGAGAGTAG"
     
     
    def ou(seq1):
        y = input("Entrez un motif :")  # raw_input en Python 2.x
        pos = []
        for i in range(len(seq1)-len(y)+1):
            if seq1[i:i+len(y)] == y:
                pos.append(i) 
        return(len(pos), pos)
     
     
    nb, p = ou(seq1)
    print("La sequence a ete trouvee", nb, "fois dans le texte aux positions", p)
    Et si vous voulez ne garder qu'une fois les éléments trouvés vous pouvez utiliser next/__next__.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Dans ce cas, il serait quand même plus simple de passer par une regexp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import re
     
    def get_index(seq, motif):
        return [ x.start() for x in re.finditer(motif, seq) ]
     
     
    s = "ACGGTAGAGAGAGAGTAG"
    index = get_index(s, 'AG')
    print ('count: ', len(index), 'values: ', index)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Une regexp est ici xxx fois plus efficace bien sur.
    Mais mélanger une regexp et une compréhension... tu est dur wiztricks par rapport au code de base.
    @lia_13: Il ne vous reste donc plus qu'à voir les expressions régulières et les compréhensions de liste.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci pour vos réponses !!!

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par PauseKawa Voir le message
    @lia_13: Il ne vous reste donc plus qu'à voir les expressions régulières et les compréhensions de liste.@+
    Python vient avec plein de librairies, d'objets et de fonctions qu'on est heureux de trouver et de pouvoir utiliser sans trop comprendre comment cela a été réalisé.

    Le PO pourrait se contenter de stocker et utiliser la fonction telle quelle et remettre à plus tard le "comprendre comment".

    De toutes façons, le débutant doit trouver un équilibre entre:
    - la frustration d'avoir à utiliser des constructions qu'il maîtrise mal mais réaliser rapidement un code qui fonctionne
    - s'embourber dans un apprentissage pas à pas de la programmation et finaliser plus lentement son code.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Crypter une chaine de caractères
    Par Yabo dans le forum Réseau
    Réponses: 18
    Dernier message: 19/11/2004, 23h04
  3. Réponses: 9
    Dernier message: 17/01/2003, 11h45
  4. Lire Une Chaine De Caractères
    Par Jonathan_Korvitch dans le forum C
    Réponses: 12
    Dernier message: 07/01/2003, 05h37
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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