Algorithme qui inverse les lettres des mots
ledebutantenpython Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
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
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.
-
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 ?
-
-
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...
-
