Algorithme qui inverse les lettres des mots

Fermé
ledebutantenpython Messages postés 48 Date d'inscription mercredi 16 octobre 2019 Statut Membre Dernière intervention 22 octobre 2019 - 21 oct. 2019 à 17:30
ledebutantenpython Messages postés 48 Date d'inscription mercredi 16 octobre 2019 Statut Membre Dernière intervention 22 octobre 2019 - 22 oct. 2019 à 22:21
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 !
A voir également:

3 réponses

Tomsuper Messages postés 1922 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 19 août 2020 409
21 oct. 2019 à 17:50
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
ledebutantenpython Messages postés 48 Date d'inscription mercredi 16 octobre 2019 Statut Membre Dernière intervention 22 octobre 2019
21 oct. 2019 à 18:00
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
ledebutantenpython Messages postés 48 Date d'inscription mercredi 16 octobre 2019 Statut Membre Dernière intervention 22 octobre 2019
21 oct. 2019 à 18:27
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
yg_be Messages postés 21046 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 janvier 2023 1 307 > ledebutantenpython Messages postés 48 Date d'inscription mercredi 16 octobre 2019 Statut Membre Dernière intervention 22 octobre 2019
21 oct. 2019 à 20:12
tu peux éviter l'erreur en évitant d'utiliser range.
0
ledebutantenpython Messages postés 48 Date d'inscription mercredi 16 octobre 2019 Statut Membre Dernière intervention 22 octobre 2019
21 oct. 2019 à 20:17
Donc tu voudrais que je marque :
for lettre in len(chaine):

?
0
yg_be Messages postés 21046 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 janvier 2023 1 307 > ledebutantenpython Messages postés 48 Date d'inscription mercredi 16 octobre 2019 Statut Membre Dernière intervention 22 octobre 2019
21 oct. 2019 à 21:00
tu as demandé comment éviter le message d'erreur, et je te suggère d'éviter d'utiliser range.
je suggère aussi de commencer par des exercices plus simples. tu ne progresseras pas en nous demandant de faire l'exercice à ta place, ni en écrivant quelques et en nous demandant de résoudre le problème.
0