Algorithme qui inverse les lettres des mots

ledebutantenpython Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   -  
ledebutantenpython Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai un DM de NSI (numérique et sciences informatiques), dans un exercice on me demande d'inverser les lettres des mots, par exemple :
"Salut ca va" devient "tulaS ac av"
J'ai un début d'algorithme :
def fonction_inverve(chaine):
     ch = ""
      for lettre in chaine :
          ch = lettre + ch
      return ch


Lorsque je rentre "Salut ca va" cela inverses les lettres de toutes la phrase en donnant "av ac tulaS" au lieu d'inverser les lettres de chaque mot.
Auriez- vous des idées pour remédier à ce problème.
Merci à ceux qui me répondront !

3 réponses

Résumé de la discussion

Le sujet traite de l’inversion des lettres au niveau des mots individuels plutôt que sur toute la phrase, afin que « Salut ca va » se transforme en « tulaS ac av ». Plusieurs réponses suggèrent de passer par une séparation caractère par caractère plutôt que par split(), afin de traiter les espaces comme séparateurs et d’inverser uniquement les lettres entre eux. D’autres proposent une approche en deux fonctions: extraire les mots d’une phrase puis inverser les lettres de chaque mot, ou alternativement exploiter split() tout en repositionnant correctement les mots inversés. Certaines contributions évoquent également des remarques sur le suivi des tests, la clarté des noms de variables et l’importance de planifier le programme en amont pour éviter des remises en question répétées.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Tomsuper Messages postés 1921 Date d'inscription   Statut Membre Dernière intervention   407
     
    Bonjour,

    à default de te donner du code, je te propose plus une piste de réfléxion.

    Pour inverser les lettre d'un mot, ton algo doit déjà detecté les mots. On vas dire que pour l'instant on vas ignorer quelle agencement de lettre forme un mot ou pas, pour l'instant on vas dire qu'un mot est identifier par un signe de ponctuation, un espace ou une tabulation.

    Donc, on peut imaginer une fonction qui, Des qu'elle recontre un espace ou une ponctuation, elle te retour tout les caractère d'avant. jusqu'a la dernier ponctuation.

    exemple:
    Bonjour,Comment tu vas ?

    Fonction 1 :

    vas retourner Bonjour à fonction 2 qui vas retourner le mot

    puis Comment, puis tu puis vas

    Des questions ?
    0
    1. ledebutantenpython Messages postés 48 Date d'inscription   Statut Membre Dernière intervention  
       
      D'accord merci je vais retravailler mon code ( je l'enverrai ultérieurement), j'ai aussi pensé à utiliser split() mais je ne sais pas comment l'intriguer a mon code...
      0
    2. ledebutantenpython Messages postés 48 Date d'inscription   Statut Membre Dernière intervention  
       
      Voici mon code :
      def fonction_inverve(chaine):
           ch = ""
           ch2 = ","
            if ch in chaine :
                   for lettre in range(len(chaine)):
                        ch2 = lettre + ch2
            return ch2
      

      Le problème est qu'il me marque: 《unsupported operand type(s) for +: "int" and "str"》et je ne sais pas comment faire pour qu'il évite de me marquer ça...
      0