Exercice recréer split
Re,
Du coup j'ai tenté direct l'exercice d'après :
Dans cet exercice, nous allons recréer la méthode split, qui permet de séparer une phrase en plusieurs éléments, en spécifiant une chaîne de caractère avec lequel séparer la phrase.
Nous allons séparer la chaîne de caractères "bonjour-tout-le-monde" sur le tiret (-) pour ainsi récupérer la liste suivante :
["bonjour", "tout", "le", "monde"]
Bien sûr, là encore, pas le droit d'utiliser la méthode split native de Python.
Nous utiliserons la fonction separateur en indiquant en premier paramètre la phrase à séparer et en deuxième paramètre la chaîne de caractère sur laquelle faire la séparation.
J'y suis presque, j'ai pour résultat :
['bonjour', 'tout', 'le']
Voici mon code:
def separateur(chaine, separateur):
liste_temp = []
liste = []
for e in chaine:
if e not in separateur:
liste_temp.append(e)
elif e in separateur:
element = "".join(liste_temp)
liste.append(element)
liste_temp.clear()
return liste
resultat = separateur("bonjour-tout-le-monde", "-")
print(resultat)
Je ne sais pas trop comment intégrer le "monde". Car forcément je ne rempli pas la condition elif e in separateur à la fin...
Est-ce que je pourrais avoir une petite aide svp ?
Je ne veux pas regarder la solution sans avoir réussi.
Merci bcq :)
Salut Gabriel,
alors tu y es vraiment presque. Effectivement il te manque juste un
liste.append("".join(liste_temp))
quelque part dans ton code. Essaye d'ajouter cette instruction à un endroit de ton code et tu verras que ça fonctionne. Tu dois le placer à un certain niveau d'indentation pour considérer le dernier mot créé.
Merci PA,
Mais je n'ai pas réussi à trouver l'endroit où le mettre. Mais j'ai trouvé une solution.
Tu en penses quoi ? :
def separateur(chaine, separateur):
taille = len(chaine)
liste_temp = []
liste = []
for i, e in enumerate(chaine, 1):
if e not in separateur:
liste_temp.append(e)
if i == taille:
element = "".join(liste_temp)
liste.append(element)
liste_temp.clear()
elif e in separateur:
element = "".join(liste_temp)
liste.append(element)
liste_temp.clear()
return liste
resultat = separateur("bonjour-tout-le-monde", "-")
print(resultat)
Salut Gabriel,
alors si tu le mettais là c'était bon:
In [2]: def separateur(chaine, separateur):
...:
...: liste_temp = []
...:
...: liste = []
...:
...: for e in chaine:
...:
...: if e not in separateur:
...: liste_temp.append(e)
...:
...: elif e in separateur:
...: element = "".join(liste_temp)
...: liste.append(element)
...: liste_temp.clear()
...:
...: liste.append("".join(liste_temp))
...:
...: return liste
...:
...:
...: resultat = separateur("bonjour-tout-le-monde", "-")
...: print(resultat)
['bonjour', 'tout', 'le', 'monde']
mais ta solution fonctionne aussi. Je la trouve juste un peu plus lourde. Mais ce qui compte c'est que tu te sois crevé la tête et que tu aimes compris le mécanisme. Bravo ! Tu aussi à quel point on puait parfois galérer à recréer des méthodes que python a déjà en builtin.
ça arrive souvent qu'on fonce tête baissée à essayer de créer une fonction alors qu'elle existe déjà.
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte