Python - Buscar subcadenas

 
Vista:
sin imagen de perfil

Buscar subcadenas

Publicado por David (9 intervenciones) el 09/11/2017 12:50:27
Hola, me piden escribir un código que cumpla el siguiente enunciado:

"Escribe una función buscar_texto que devuelva el número de veces que aparece la cadena que se pasa como segundo argumento en la cadena que se pasa como primer argumento. Por ejemplo buscar_texto('No por mucho madrugar amanece mas temprano', 'ma') debe devolver 3."

El problema es que no se me permite usar la función count. Agradecería cualquier ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de José María
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Buscar subcadenas

Publicado por José María (245 intervenciones) el 09/11/2017 15:22:38
def busca_texto(cadena, a_buscar):
dev = 0
while True:
posicion = cadena.find(a_buscar)
if posicion >= 1:
cadena = cadena[posicion+len(a_buscar):]
dev += 1
else:
break

return dev
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Buscar subcadenas

Publicado por kip (257 intervenciones) el 09/11/2017 16:57:46
Jose Maria tu codigo no funciona del todo bien, por ejemplo si pruebo con esto:

1
busca_texto('ulala mala', 'la')

Retorna 1, en lugar de 3 que es la respuesta correcta, porque al hacer el slice en el string en la segunda pasada el find() devuelve 0 y el while finaliza al no cumplirse que posicion sea mayor o igual a 1...

Aqui te dejo mi aporte tambien:

1
2
3
4
5
6
7
def buscar_texto(cadena, buscar):
    step = len(buscar)
    total = 0
    for i in range(len(cadena)):
        if cadena[i:i+step] == buscar:
            total += 1
    return total

1
print buscar_texto('No por mucho madrugar amanece mas temprano', 'ma') #Muestra 3
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Buscar subcadenas

Publicado por David (9 intervenciones) el 09/11/2017 18:35:08
El último código funciona perfectamente, gracias por el aporte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de José María
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Buscar subcadenas

Publicado por José María (245 intervenciones) el 09/11/2017 19:04:32
Tienes razón. La fila

if posicion >= 1:

debe ser:

if posicion != -1:
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar