9 votes

Inverser chaque mot d'une chaîne de caractères

J'ai un petit problème dans mon code. J'essaie d'inverser les mots et les caractères d'une chaîne de caractères. Par exemple, "le chien a couru" deviendrait "ehT god nar".

Le code fonctionne presque. Il n'ajoute simplement pas les espaces. Comment faire ?

def reverseEachWord(str):
  reverseWord=""
  list=str.split()
  for word in list:
    word=word[::-1]
    reverseWord=reverseWord+word+""
  return reverseWord

14voto

NPE Points 169956

Vous êtes sur la bonne voie. Le problème principal est que "" est une chaîne vide, pas un espace (et même si vous corrigez cela, vous ne voulez probablement pas d'espace après le dernier mot).

Voici comment vous pouvez le faire de manière plus concise :

>>> s='The dog ran'
>>> ' '.join(w[::-1] for w in s.split())
'ehT god nar'

4voto

Rob Cowie Points 10471
def reversed_words(sequence):
    return ' '.join(word[::-1] for word in sequence.split())

>>> s = "The dog ran"
>>> reversed_words(s)
... 'ehT god nar'

1voto

A.Raouf Points 852
def reverse_words(sentence):        
     return " ".join((lambda x : [i[::-1] for i in x])(sentence.split(" ")))

1voto

Moses Okemwa Points 133

Une autre façon de procéder est d'ajouter un espace à vos mots. reverseWord=reverseWord+word+" " et en supprimant l'espace à la fin de votre sortie en utilisant .strip()

def reverse_words(str):
  reverseWord = ""
  list = str.split()
  for word in list:
    word = word[::-1]
    reverseWord = reverseWord + word + " "
  return reverseWord.strip()

Regardez ça poste sur la façon dont il est utilisé

1voto

sanx84 Points 11
name=input('Enter first and last name:')
for n in name.split():
    print(n[::-1],end=' ')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X