Le 11 novembre 2019 à 23:02:26 Cuckologue a écrit :
Je suis en maths sup (donc débutant en prog) et l'interet de cet algo et justement de ne pas utiliser count car trop facile
Par motif j'entends en effet un ou plusieurs caractère
Dans ce cas je t'ai tout dis.
if chaîne[i]== motif: Ce code ne peut pas faire ce que tu souhaites, puisqu'il compare chaîne[i] (un seul élément de ta chaîne) à motif, qui est potentiellement une chaîne de plusieurs éléments.
len([i for i in range(len(string)) if string.startswith(motif, i)])
Ici on créer une array qu'on feed avec des indexes.
On fait une boucle sur la chaîne for i in range(len(string)) et on ajoute i à l'array à la condition que string.startswith(motif, i) retourne true. Soit, qu'à l'indexe i, jusqu'à la fin de la chaîne, il y est la sous-chaîne motif (à partir de l'indexe i).
En suite, on récupère la taille de l'array qui correspond donc au nombre d'occurences.
Sachant qu'on se trimbale une array simplement pour le plaisir d'avoir du one-line, ce n'est, dans l'absolue, pas nécessaire.
Il te faut donc d'abord créer une fonction qui te permets de comparer deux chaînes à partir d'un indexe, qui return true dans le cas où elle à pu identifier motif à partir de l'indexe en question, et de remplacer ton if chaîne[i]== motif: par if myStartWithImplem(chaîne, i, motif):.