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 :

Itérer sur une chaîne


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Itérer sur une chaîne
    Voici un petit itérateur pour Python 3 que je viens de faire (merci Dive Into Python 3) :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    #!/usr/bin/env python
     
    # Source : "Dive into Python 3"
     
    class iterator():
        def __init__(self, text):
            self.text = text
     
        def __iter__(self):
            self.__index = 0
            self.__indexMax = len(self.text)
            return self
     
        def __next__(self, step = 1):
            currentIndex = self.__index
            self.__index += step
     
            if self.__index >= self.__indexMax:
                raise StopIteration
     
            return self.text[currentIndex]
     
     
    #######
    # TESTS
     
    if __name__=="__main__":
        myIterator = [ iterator('abcdefgh'),
                   iterator('ab') ]
     
        for oneIterator in myIterator:
            print('-'*20)
     
            for c in oneIterator:
                try:
                    if c == 'b':
                    oneIterator.__next__(2)
     
                    print(c)
                except StopIteration:
                    pass
    J'ai créé cet itérateur afin de parcourir une chaîne en sautant quelque fois des caractères.

    J'aurais voulu éviter l'emploi de try:... except StopIteration:.... Est-ce faisable ? Quelqu'un a-t-il une idée ?

  2. #2
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Bon en fait il n'y en a pas besoin... Je sais pas ce que j'ai fait tout à l'heure...

    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
    34
    35
    36
    37
    38
    39
    #!/usr/bin/env python
     
    # Source : "Dive into Python 3"
     
    class iterator():
        def __init__(self, text):
            self.text = text
     
        def __iter__(self):
            self.__index = 0
            self.__indexMax = len(self.text)
            return self
     
        def __next__(self, step = 1):
            currentIndex = self.__index
            self.__index += step
     
            if currentIndex >= self.__indexMax:
                raise StopIteration
     
            return self.text[currentIndex]
     
     
    #######
    # TESTS
     
    if __name__=="__main__":
        myIterator = [ iterator('abcdefgh'),
                       iterator('ab123b'),
                       iterator('ab123b123b123cdf') ]
     
        for oneIterator in myIterator:
            print('-'*20)
     
            for c in oneIterator:
                print(c)
     
                if c == 'b':
                    oneIterator.__next__(3)

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

Discussions similaires

  1. [Turbo Pascal] Exercice sur une chaîne de caractères
    Par mah00 dans le forum Turbo Pascal
    Réponses: 35
    Dernier message: 10/01/2010, 13h47
  2. recherche sur une chaîne de caractères
    Par bogsy15 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/07/2006, 12h01
  3. Tri sur une chaîne de caractères contenant des nombres
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/05/2006, 11h52
  4. Requête sur une chaîne de caractères
    Par Hakunamatata dans le forum Langage SQL
    Réponses: 9
    Dernier message: 02/04/2006, 18h27
  5. [STRUTS] Itérer sur une HashMap
    Par s.grenet dans le forum Struts 1
    Réponses: 5
    Dernier message: 06/04/2005, 13h26

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