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 :

Problème code python


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Septembre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Septembre 2016
    Messages : 18
    Points : 9
    Points
    9
    Par défaut Problème code python
    Bonjour, mon objectif est de créer une fonction qui va modifier un string comme "Bonjour le monde" en ["Bonjour","le","monde"]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def fct1(s):
        l=[]
        mot=""
        for e in s:
              if e == " ":
                l.append(mot)
                mot=""
              else:
                mot+=e
              return l
    print (fct1("Bonjour le monde"))
    J'ai donc écris cette fonction seulement cela me renvois uniquement [] alors que je devrais avoir ["Bonjour","le","monde"].

    Auriez-vous une solution?

    Merci

    PS: je connais split mais je ne veux pas l'utiliser ici.

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    346
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 346
    Points : 439
    Points
    439
    Par défaut
    En fonction de l'indentation indiquée, vous renvoyez une valeur au premier tour de boucle. Reste le problème d'ajout du dernier mot de votre phrase si celui-ci n'est pas un espace.
    Il faudrait plutôt ajouter en cas de mot qu'en cas de blanc.

  3. #3
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def fct1(s):
        l=[]
        mot=""
        for e in s:
              if e == " ":
                l.append(mot)
                mot=""
              else:
                mot+=e
        l.append(mot)
        return l
    print (fct1("Bonjour le monde"))
    Erreur 1 : Indentation du return
    Erreur 2 : Vous oubliez d'ajouter le dernier mot (qui lui n'est pas suivi d'un espace)

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Un bon usage des "print" :
    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
    def fct1(chaine):
        return chaine.split()
    print (fct1("Bonjour le monde"))
     
    def fct2(s):
        l=[]
        mot=""
        for e in s:
            print("e : ", e)
            if e == " ":
                print("e_bis : ", e)
                print("mot : ", mot)
                l.append(mot)
                mot=""
            else:
                print("mot_bis : ", mot)
                mot+=e
                print("mot_ter : ", mot)
            return l
     
    fct2("Bonjour le monde")
    Pas d'aide par mp.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Septembre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Septembre 2016
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Un grand merci

    J'ai également un petit problème, j’essaie maintenant de séparer les chiffres et la caractères alpha numériques.
    Quand je fais ça:
    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
    def fct1(s):
        l=[]
        mot=""
        for e in s:
              if e.isdigit():
                l.append(mot)
                print("y",e)
                mot=""
              elif not e.isdigit():
                mot+=e
                print("c",e)
        l.append(mot)
        print("h",e)
        return l
    print (fct1("ac12gct34"))
    seules les lettres apparaissent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ['ac', '', 'gct', '', '']
    Pourriez-vous m'aider à comprendre pourquoi les chiffres n'apparaissent pas?

  6. #6
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Si vous ne voyez pas d'ou vient le problème, c'est que vous n'afficher pas le problème.
    Pourquoi ne faire print que sur la variable e ? Si celle-ci semble évoluer correctement, alors faites afficher les autres (comme mot et/ou l par exemple) pour voir si elles aussi se comportent bien.

    Bon après en vria, la le problème est plutot algorithmique que Pythonique. A la main, comment feriez-vous ? Là votre code fait la même chose que le précédent, sauf qu'au lieu de considéré l'espace comme le caractère de séparation vous considérez les chiffres...

    D'autre part la ligne
    me parait relativement maladroite, puisque dans le if au dessus, vous avez déjà tester
    donc si vous contenter d'un else juste après vous êtes nécéssairement dans le cas ou e.isdigit() est faux (inutile de le retester).

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Septembre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Septembre 2016
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    A la main je sais quoi faire:
    (1) parcourir s
    (2) a chaque fois que le caractère est un chiffre, le mettre dans la liste, sinon séparer puis continuer.

    Mais je ne comprends pas comment faire pour que la séparation soit cette fois-ci le fait qu'on change de type de caractère...
    J'ai un peu du mal je débute dans python.

    Merci pour votre aide.

  8. #8
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Non, ce n'est pas ca que tu fais à la main. Essaie d'appliquer toi même ton algorithme sur un petit exemple que tu déroule à la main, tu verras, ça ne donne pas ce que tu veux.

    Ca
    Citation Envoyé par Grendel26 Voir le message
    (2) a chaque fois que le caractère est un chiffre, le mettre dans la liste, sinon séparer puis continuer.
    (qui n'est pas hyper clair soit dit en passant) et ça
    Citation Envoyé par Grendel26 Voir le message
    comment faire pour que la séparation soit cette fois-ci le fait qu'on change de type de caractère...
    se contredit !

    La séparation ce fait non pas lorsque tu as spécifiquement un chiffre. Elle se fait lorsqu'il y a un changement. C'est à dire qu'on passe d'un chiffre à une lettre, ou bien d'une lettre à un chiffre.

    Il va donc falloir que dans ta boucle for, tu gardes en mémoire le précédent élément (ou du moins son type, c'est à dire lettre ou chiffre) de sorte à savoir si l'élément courrant est du même type que le précédent ou s'il y a eu changement. C'est ca qu'il faut traduire dans la condition if.

  9. #9
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    Bonjour,

    Pour découper une chaîne de caractères en plusieurs sous-chaînes selon différents critères, le mieux est d'utiliser 'split'
    https://docs.python.org/fr/3/library...split#re.split
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Citation Envoyé par Fifan31 Voir le message
    Bonjour,

    Pour découper une chaîne de caractères en plusieurs sous-chaînes selon différents critères, le mieux est d'utiliser 'split'
    https://docs.python.org/fr/3/library...split#re.split
    Premier post à lire entièrement.
    Pas d'aide par mp.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Septembre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Septembre 2016
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    Non, ce n'est pas ca que tu fais à la main. Essaie d'appliquer toi même ton algorithme sur un petit exemple que tu déroule à la main, tu verras, ça ne donne pas ce que tu veux.

    Ca

    (qui n'est pas hyper clair soit dit en passant) et ça

    se contredit !

    La séparation ce fait non pas lorsque tu as spécifiquement un chiffre. Elle se fait lorsqu'il y a un changement. C'est à dire qu'on passe d'un chiffre à une lettre, ou bien d'une lettre à un chiffre.

    Il va donc falloir que dans ta boucle for, tu gardes en mémoire le précédent élément (ou du moins son type, c'est à dire lettre ou chiffre) de sorte à savoir si l'élément courrant est du même type que le précédent ou s'il y a eu changement. C'est ca qu'il faut traduire dans la condition if.
    OK, alors sans avoir vraiment le script en main je pensais faire quelque chose comme cela:
    l=[] (crée moi une liste vide)
    for e in s: (pour le premier caractère que tu rencontres)
    if e-1.isdigit() and e.isdigit(): (si tu es un chiffre et que celui avant toi aussi)
    l.append(e) (place ce e dans la liste l)
    else: (sinon)
    place le dans une autre sous-liste dans la liste l)

    J'ai beau me casser la tête je n'arrive pas à écrire quelque chose qui tienne la route :/
    D'autres indices pour m'aider?

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Il faut user et abuser des "print". Je vous ai montré la voie : ne pas hésiter à en ajouter d'autres.
    Pas d'aide par mp.

  13. #13
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Citation Envoyé par Grendel26 Voir le message
    if e-1.isdigit() and e.isdigit(): (si tu es un chiffre et que celui avant toi aussi)
    Et si je suis une lettre et que le suivant est une lettre ? Là tu veux tester que 2 éléments sont du même type. Pourquoi utiliser "and" pour tester une égalité ?

    Ensuite si e est l'élément courant, e-1 ne permet pas d'accéder à l'élément précédent (mais simplement de retrancher 1 à l'élément courant). Parcours ta liste avec les indices et là tu pourras écrire des choses comme s[i] et s[i-1]

  14. #14
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    Bonjour,
    Alors, si j'ai bien compris, tu veux à partir de la chaine "ac12gct34" obtenir la liste ["ac", "12", "gct", "34"]
    Pour ca, tu peux utiliser l'algo suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Pour chaque caractère
      S''il est du même type que le précédant (lettre ou chiffre)
        Ajouter le caractère au "mot" courant
      Sinon
        Ajouter le mot à la liste résultat
      Mettre à jour le caractère précédent mémorisé
    Si un mot était en cours de construction
      l''ajouter à la liste
     
    retourner la liste
    Avec ça, je pense que tu as presque tout ce qu'il faut. A toi de terminer et de traduire tout ça en python. N'oublie pas de nous faire part de ta solution ;-)
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  15. #15
    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 Grendel26 Voir le message
    J'ai beau me casser la tête je n'arrive pas à écrire quelque chose qui tienne la route :/
    D'autres indices pour m'aider?
    Vous vous rendez compte que c'est un peu pareil que le cas précédent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def fct1(s):
        l = []
        mot=""
        for e in s:
            if e == " ":
                if mot:
                    l.append(mot)
                    mot=""
            else:
                mot+=e
        if mot:
            l.append(mot)
        return l
    print (fct1("Bonjour le monde"))
    (qui est la solution de lg_53 amendée pour traiter les " " en début et en fin de chaîne).
    Il suffit de changer la condition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def fct2(s):
        l = []
        mot=""
        for e in s:
            if not e.isdigit():
                if mot:
                    l.append(mot)
                    mot=""
            else:
                mot+=e
        if mot:
            l.append(mot)
        return l
    print(fct2("ac12gct34"))
    i.e. plutôt que de pousser ce qui a été accumulé dans "mot" dans la liste lorsqu'on voit un " ". On le pousse lorsque qu'on rencontre autre chose qu'un digit.

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

  16. #16
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Pas sûr que tu ais bien saisi ce que souhaites faire Grendel.

    Je pensais plutôt à un code de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def fct3(s):
        l = []
        mot=s[0]
        for i in range(1,len(s)):
            e = s[i]
            if e.isdigit() != s[i-1].isdigit() :
                l.append(mot)
                mot=e
            else:
                mot+=e
        l.append(mot)
        return l
    print(fct3("ac12gct34"))
    qui fournit en résultat ["ac","12","gct",34"]

    (Je ne traite pas les espaces effectivement, pour simplifier un peu)

  17. #17
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    Pour ma part, j'avais ce 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
    def fct(s):
        rv = []
        previous = s[:1]
        word = ""
        for current in s:
            if (current.isalpha() and previous.isalpha()) or (current.isdigit() and previous.isdigit()):
                word += current
            else:
                rv.append(word)
                word = ''
                if current.isalnum():
                    word = current
            previous = current
     
        if word:
            rv.append(word)
     
        return rv
     
    print(fct('ac12gct34'))
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Septembre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Septembre 2016
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup à tous le monde.

    J'ai essayé de commenter chaque ligne de code pour voir si j'ai bien tout compris, pouvez-vous me dire si mes commentaires sont les bons pour voir si j'ai bien tout compris?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def fct3(s):
        l = [] #créer un liste vide 
        mot=s[0] #créer une variable mot égale à l'indice 0 du string s 
        for i in range(1,len(s)): #pour tous les éléments i de 1 à la fin de s, on va effectuer les instructions de la boucle.
            e = s[i] #on crée une variable e égale à s[i]
            if e.isdigit() != s[i-1].isdigit() : #si l'indice e est un nombre et que l'indice d'avant n'était pas un nombre
                l.append(mot) #alors ajouter à la fin de la list l l'élement mot
                mot=e #sachant que mot est égale au e d'intéret 
            else:  # sinon 
                mot+=e # la variable mot devient mot+e 
        l.append(mot) # et dans ce cas la ajouter dans une autre sous-liste de l l'élement mot nouvellement définit
        return l
    print(fct3("ac12gct34"))

  19. #19
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Aie, non les commandes clés ne sont pas bien comprises ici.
    J'ai barré ou souligné les commentaires faux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def fct3(s):
        l = [] #créer un liste vide 
        mot=s[0] #créer une variable mot égale à l'indice 0 du string s 
        for i in range(1,len(s)): #pour tous les éléments i de 1 à la fin de s, on va effectuer les instructions de la boucle.
            e = s[i] #on crée une variable e égale à s[i]
            if e.isdigit() != s[i-1].isdigit() : #si l'indice e est un nombre et que l'indice d'avant n'était pas un nombre
                l.append(mot) #alors ajouter à la fin de la list l l'élement mot
                mot=e #sachant que mot est égale au e d'intéret 
            else:  # sinon 
                mot+=e # la variable mot devient mot+e 
        l.append(mot) # et dans ce cas la ajouter dans une autre sous-liste de l l'élement mot nouvellement définit
        return l
    print(fct3("ac12gct34"))
    J'explique pourquoi ici.

    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if e.isdigit() != s[i-1].isdigit() :
    Si e.isdigit est vrai , e est un nombre.
    Si e.isdigit est faux , e est une lettre.
    Si s[i-1].isdigit est vrai, s[i-1] est un nombre.
    Si s[i-1].isdigit est faux, s[i-1] est une lettre.

    Ensuite :
    Vrai != Vrai est faux
    Vrai != Faux est vrai
    Faux != Vrai est vrai
    Faux != Faux est faux

    Donc si e.is_digit et s[i-1].is_digit donne la meme chose (c'est à dire tous les deux vrais ou tous les deux faux) alors e.isdigit() == s[i-1].isdigit() sera vrai (les deux membres sont égaux) et donc e.isdigit() != s[i-1].isdigit() sera faux.

    Cette expression vaut donc vrai lorsqu'il y a un changement entre lettre et chiffre. Je ne sais pas si c'est clair pour vous mais si ca ne l'est pas il faut impérativement que vous écriviez à la main les 4 cas de figures, pour vous convaincre que cette expression traduit qu'il y a un changement et pas juste "si je suis un nombre et qu'avant ce n'était pas un nombre". L'expression ici englobe aussi en plus de ce que vous dites "si je suis une lettre et qu'avant ce n'était pas une lettre".

    2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mot=e #<s>sachant que mot est égale au e d'intéret </s>
    Non ! Ici on vient juste d'ajouter notre mot à la liste. On doit donc commencer un nouveau mot. Et ce nouveau mot pour l'instant je peux juste dire qu'il commence part le caractère e. C'est l'équivalent de mot=s[0], mais au milieu de la boucle. N'oublions pas que e=s[i], donc mot=e c'est en fait mot=s[i].

    3) Il faut absolument revoir (ou voir) un tuto sur l'importance de l'indentation en Python.
    Ici l'instruction l.append(mot) juste avant le return n'est pas à l'intérieur de la boucle if. Elle n'est meme pas à l'intérieur de la boucle for ! Cette instruction n'est éxécuté qu'une seule et unique fois lors de l'appel de la fonction, et ça juste à la fin. Elle permet d'ajouter le dernier mot à la liste. Car quand on arrive au bout de la liste, on a plus aucun caractère après pour comparer. Il faut donc ajouter le dernier mot qu'on avait en stock. Tester la fonction sans cette ligne vous verrez.



    D'autres part on essaie de faire des commentaires utiles qui se rapproche du problème réel que l'on regarde !
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mot+=e # la variable mot devient mot+e
    Ok ca je peux le dire sans avoir besoin du commentaire !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mot+=e # Ajoute le caractère e à la fin de mot
    me parait plus explicatif vis à vis du problème que tu regarde.

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Septembre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Septembre 2016
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    MERCI BEAUCOUP!!
    J'ai tout compris vous m'avez été d'une grande aide.

    Excellente journée à tous

Discussions similaires

  1. [Bouml]modifier le générateur de code python
    Par cedrix57 dans le forum BOUML
    Réponses: 4
    Dernier message: 16/03/2009, 22h12
  2. Réponses: 3
    Dernier message: 08/03/2009, 10h50
  3. conversion d'indentation dans un code python
    Par KINENVEU dans le forum Général Python
    Réponses: 2
    Dernier message: 26/02/2009, 04h04
  4. Réponses: 1
    Dernier message: 24/05/2008, 17h04
  5. [SWIG] dialogue entre code C et code python
    Par dmichel dans le forum Interfaçage autre langage
    Réponses: 12
    Dernier message: 19/12/2007, 21h19

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