Tu recommences avec tes exemples qui fonctionneront avec la méthode count.
Pour voir si ça fonctionne, testes avec l'exemple assesses
Tu recommences avec tes exemples qui fonctionneront avec la méthode count.
Pour voir si ça fonctionne, testes avec l'exemple assesses
ok merci beaucoup pour tes instructions.
Ca commence a s'eclaircir tout doucement.
Salut,
La solution de cet exercice devrait être:
L'objectif étant de vous apprendre à maîtriser l'utilisation de séquences (haystack[i:len(needle)+i]) qui pourront être appliqué à n'importe quel objet de type "sequence".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 needle=input() haystack=input() counter=0 for i in range(0,len(haystack)): if(haystack[i:len(needle)+i]!=needle): continue counter=counter+1 print(counter)
On vous propose de travailler sur des chaînes de caractères car c'est plus facile de visualiser ce qu'il se passe mais on peut construire des séquences de n'importe quel type d'objets.
Les méthodes .find, .counter sont du savoir-faire de programmeur en boîte.
Elles permettent au programmeur d'éviter d'avoir à ré-écrire des fonctionnalités de base pour utiliser celles des bibliothèques Python.
Savoir quelles sont les méthodes d'une classe comme "str" et comment les utiliser est une bonne chose mais c'est pour plus tard: lorsque vous saurez codez ces fonctions simples par vous même.
- W
Ma premiere esquisse etait pas mal mais il fallait que j'arrive a faire des sous strings de longueur needle comme:
asse
sses
sess
esse
ou:
tr
ra
an
ns
sp
pa
an
na
am
ma
an
ni
ia
an
b
ba
an
na
an
na
as
mais ca n'a pas marche
c'etait dans ce but que je voulais transformer les strings en listes, pour avoir des listes du second degre, chose impossible en strings()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 """ maintenant tu comprendras ce que je voulais faire O grand wiztricks """ # On introduit les deux variables de chaine needle = input("segment = ") haystack = input("chaine = ") # On nomme leurs longueurs respectives. l = len(needle) h = len(haystack) # On transformes les variables en listes. aiguille = list(needle) botte_de_foin = list(haystack) print("La liste mineure est: ", aiguille) print("La liste majeure est: ", botte_de_foin) # on initialise la liste des listes candidats. Ce devrait etre une liste de second degre #comportant comme elements des candidats a etre "aiguille". nouvelle = [] # On initialise le nombre de candidats selectionnes a zero. total = 0 for item in botte_de_foin[0: h - l]: # chaque premier element de liste candidate est passe en revu dans l'ordre # nous avons pris soin de ne pas y inclure les derniers elements de botte de foin # trop proches de la fin pour initier un candidat de longueur l. p = botte_de_foin.index(item) candidat = botte_de_foin[p: p + l] print("candidat = ", candidat) nouvelle if candidat == aiguille: # on ajoute a la liste nommee nouvelle un element, lui # meme etant une sous-liste, nommee candidat nouvelle = nouvelle + (candidat) print (nouvelle) print ("le nombre d'occurences est: ", len(nouvelle))
Et le seul probleme majeur etait que ce programme ne creait pas de liste de listes.
Je l'ai tourne sous plusieurs formes et ca n'a pas marche.
Et personne ne m'a explique pourquoi ca ne fait pas des listes de listes! (Vous me direz... personne n'est oblige de le faire non plus)
Ca pourrait faire une liste de "str", mais liste de liste de quoi?
On ne peut pas essayer de vous expliquer ce qu'on ne comprend pas.
D'autant que passer par là, n'est pas une solution évidente du problème posé
En français, pour trouver toutes les sous-chaines "needle" dans "haystack", on découpe haystack en sous-chaines de même longueur que needle et on compare.
C'est tout ce que fait le bout de code que j'ai posté:
Et comme on ne peut pas à prendre le temps de comprendre les objectifs pédagogiques d'un tuto., on vous proposera une solution de programmeur pas une solution à l"exercice.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for i in range(0,len(haystack)): if(haystack[i:len(needle)+i]!=needle): continue
- W
C'est magnifique
Merci beacoup
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager