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 :

inverser une chaine.


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Points : 68
    Points
    68
    Par défaut inverser une chaine.
    Bonjour,
    je (re)debute en python et je bloque sur des choses qui me paraissent simple dans d'autres langages
    exemple:

    Il s'agit d'inverser une chaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    def inverse(ch):
     
    ??????????
     
    phrase = ("fait chaud aujourd'hui")
    print(inverse(phrase))
    je sais c'est basique mais je bloque
    Merci pour votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Points : 68
    Points
    68
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        ch1 = "abcde"
        ch2 = ""
        i = len(ch1) - 1 #index du dernier caractere de ch1
        while i >= 0:
            ch2 += ch1[i]#on ajoute/concatène un caractere de ch1 (en partant de la fin) a ch2
            i -= 1
        return ch2
    je comprends cela mais comment en faire un def?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Points : 68
    Points
    68
    Par défaut
    Comme cela peut etre?
    Je poste un peu vite non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    def inverse(ch):
     
        ch1 = ch
        ch2 = ""
        i = len(ch1) - 1 #index du dernier caractere de ch1
        while i >= 0:
            ch2 += ch1[i]#on ajoute/concatène un caractere de ch1 (en partant de la fin) a ch2
            i -= 1
        return ch2
    phrase="il fait chaud"
    print(inverse(phrase))

  4. #4
    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,
    Si vous débutez en programmation avec Python, vous pouvez écrire ça avec des boucles:
    • /for/ et /while/
    • une fonction récursive

    Ce sont de bons exercices a faire quelque soit le langage.

    Si vous débutez en Python, un /str/ étant un (objet de type) /slice/, on écrira:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    phrase="il fait chaud"
    print(phrase[::-1])
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    wiztricks,

    pourrais tu nous expliquer plus en détail le "phrase[::-1]".

    je ne connais pas cette notation. Je voit bien le résultat, ce qui m'intrigue c'est le "::".

    ":-1" aurait simplement renvoyer la phrase sans la dernière lettre, "::" renvoie simplement la phrase, alors que le ::-1 inverse le tout.

    merci de ton retour
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  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
    Salut,

    Que dire? C'est une fonctionnalité qui existe depuis 2.4. Je n'ai pas retrouve ces cas d'utilisations dans la documentation récente, mais Google retrouve cela.

    De toutes façons, on sera toujours surpris par la puissance des fonctionnalités de base de Python et on ne pensera pas toujours a les utiliser (moi y compris).
    C'est la vie.

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

  7. #7
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Je n'avait pas trouvé cette page.

    Merci beaucoup pour ce lien qui éclaire tout. Et oui, PYTHON me surprendra toujours par sa puissance.

    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  8. #8
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Bonjour,
    Sinon, cette utilisation est aussi expliquée dans la documentation standard de Python:
    http://docs.python.org/3/library/stdtypes.html
    http://docs.python.org/3/reference/datamodel.html

    Clodion

  9. #9
    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 Clodion Voir le message
    Sinon, cette utilisation est aussi expliquée dans la documentation standard de Python:
    http://docs.python.org/3/library/stdtypes.html
    http://docs.python.org/3/reference/datamodel.html
    Si tu as trouve ou est expliquée la construction [::-1] la dedans, bravo!
    "Search" ne trouvant pas, ça n'aide pas plus que d'avoir dit "c'est dans la doc"
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Bonjour,
    Désolé de cette imprécision…
    Pour http://docs.python.org/3/reference/datamodel.html, c'est la partie "3.2. The standard type hierarchy" puis "Sequences":
    "Some sequences also support “extended slicing” with a third “step” parameter: a[i:j:k] selects all items of a with index x where x = i + n*k, n >= 0 and i <= x < j."
    Pour ce qui est de http://docs.python.org/3/library/stdtypes.html, c'est la partie "4.6.1. Common Sequence Operations" qui, dans le tableau indique:
    s[i:j:k] slice of s from i to j with step k (3)(5)
    La note (5) se réfère à:
    "The slice of s from i to j with step k is defined as the sequence of items with index x = i + n*k such that 0 <= n < (j-i)/k. In other words, the indices are i, i+k, i+2*k, i+3*k and so on, stopping when j is reached (but never including j). If i or j is greater than len(s), use len(s). If i or j are omitted or None, they become “end” values (which end depends on the sign of k). Note, k cannot be zero. If k is None, it is treated like 1."

    Voilà… Je suis désolé, je ne sais pas trouver les ancres dans le texte original…
    Encore désolé pour ces imprécisions.
    Clodion

  11. #11
    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,

    Pour trouver une /anchor/ plus précise, il faut remonter au titre du paragraphe.
    Ceci dit, pas facile d'imaginer ce que peut faire [::-1] a partir de ça.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  12. #12
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Bonjour,
    Citation Envoyé par wiztricks Voir le message
    Salut,
    Ceci dit, pas facile d'imaginer ce que peut faire [::-1] a partir de ça.
    Oui, sans doutes.
    Après avoir lu cela, j'ai considéré que le découpage pouvait se comparer, toute proportion gardée, à range(deb, fin, pas)…
    Donc bon, cela devenait plus "évident".

    D'autre part, je suis certain de l'avoir aussi lu dans un bouquin "courant" mais sans pouvoir remettre la main dessus.

    Clodion

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

Discussions similaires

  1. [C#] Comment inverser une chaine de caractères ?
    Par just1980 dans le forum Contribuez
    Réponses: 6
    Dernier message: 01/05/2011, 20h35
  2. [WD11] Inverser une chaine de caractère
    Par Redg9 dans le forum WinDev
    Réponses: 4
    Dernier message: 31/03/2010, 20h29
  3. recursivité :inverser une chaine de caractères
    Par Echap dans le forum Débuter
    Réponses: 20
    Dernier message: 14/05/2009, 19h43
  4. Inverser une chaîne de caractères
    Par yiuyiu dans le forum MATLAB
    Réponses: 4
    Dernier message: 09/08/2007, 10h13
  5. Réponses: 10
    Dernier message: 28/02/2007, 00h00

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