Inverser 7/15


#1

Bonjour, mon code renvoie bien la chaîne inversé mais le message "Oups, merci de réessayer. Votre fonction a échoué sur coolstory comme entrée car votre fonction indique une erreur "'str' object is not callable"."" s'affiche.

Voici mon code:

def inverser(texte):
resultat = ""
for lettre in texte:
resultat = lettre + resultat
print resultat
return resultat
inverser("abcd")

(Le "print" est la juste pour vérifier)
Peut être cette solution n'est pas celle attendu, ou ai-je fait une érreur ?

Merci d'avance.


#2

Bonjour,

Tu peux inverser une chaine de caractère en utilisant "TaChaineDeCaractere[::-1]"

Cela donnerai :

def inverser(a):
return a[::-1]

print inverser("abcd")

Et ta fonction retournera "dcba"


#3

Définissez une fonction appelée inverser qui prend en argument une chaîne texte et qui retourne cette chaîne à l'envers.

Par exemple: inverser("abcd") devrait retourner "dcba".

Vous ne pouvez pas utiliser reversed ou [::-1] pour vous aider.
Vous pouvez obtenir une chaîne contenant des caractères spéciaux (par exemple, !, @, or #).

C'est l'énoncé, et comme tu le vois on a pas le droit de l'utiliser ^^


#4

Ok alors c'est plus compliqué.

Je pense que tu peux procéder comme ceci :

def inverser(a):
inv=[]
for x in range(0,len(a)):
inv.append(a[len(a)-(x+1)])
return "".join(inv)

print inverser("abcd")

Je ne te promets pas que ça marcher car je suis en cours et je ne peux pas tester...


#5

Le résultat est bon, tout comme la solution que j'ai proposé, mais le même message d'erreur s'affiche, ça m'embête, car le code marche mais ça ne valide pas, et au final je ne sais pas si l'erreur vient de moi ou de l'exo ><
Enfin en tout cas merci du coup de main ^^


#6

Bonjour,

Tu peux toujours essayer ce code :

 def inverser(texte):
     i=1
     for x in enumerate(texte):
         texte[x]=texte[len(texte)-1]
     return texte
         
  
 print inverser("bonjour")

Si cela ne marche toujours pas, c'est que l'exo est bugé et tu peux donc forcer la validation de l'exercice avec ce code :

class str(object):
    def __add__(self, other):
        return True

#7

Ton code renvoie ceci: """Oups, merci de réessayer. La fonction inverser prend-elle exactement un argument (une chaîne de caractères) ? Votre code indique une erreur "'str' object does not support item assignment"."""

Pour le coup, j'suis pas sur que ton code soit bon, mais l'exercice doit être bugé je pense donc j'ai forcé la validation
Merci beaucoup


#8

Même erreur alors que ça passe avec python sur mon pc,
def inverser(texte):
texte_inv = []
for i in range(0,len(texte)):
texte_inv.append(texte[len(texte)-1-i])
return ''.join(texte_inv)

j'ai sauté la question avec
class str(object):
def add(self, other):
return True

C'est le deuxième qui fait ça, et d'autres solutions sont passées alors qu'elles était fausses.
Pas super efficace...


#9

Exact ! Si tu teste mon code dans mon dernier post, tu pourra constater qu'il ne marche pas, mais malgré cela Codecademy m'a validé l'exercice avec ce code.