es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Seguimiento de la posición en el texto buscado cuando la misma palabra aparece más de una vez.

La siguiente función es esencialmente un teleprompter. Cuando el usuario ingresa una palabra o varias en cualquier orden, la función imprime la palabra justo después de cada una de las palabras que ingrese el usuario. Sin embargo, hay un caso especial cuando una palabra ingresada ocurre varias veces dentro del texto preestablecido; la función siempre imprime la palabra de la primera ocurrencia. ¿Cómo se puede modificar esta función para hacer un seguimiento de la posición de la palabra ingresada por el usuario dentro del texto preestablecido? Por ejemplo:

Para la primera ocurrencia de “a” en el texto preestablecido:

Ingresa las palabras que dirás a continuación: a

importante

Si el usuario ya pasó ese punto en el texto, ingresando “a” por segunda vez:
“`ninguno
Ingresa las palabras que dirás a continuación: a

diagnosticable

Para la primera ocurrencia de "estos" en el texto preestablecido:
ninguno
Ingresa las palabras que dirás a continuación: estos

increíblemente

Si el usuario ya pasó ese punto en el texto, ingresando "estos" por segunda vez:
ninguno
Ingresa las palabras que dirás a continuación: estos

joven

En otras palabras, el programa debe continuar avanzando en el texto una vez que una palabra ya ha sido buscada. ¿Cómo puedo lograr eso?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una forma de lograr esto es utilizar un bucle while para iterar a través de note_list y llevar un registro del índice de la palabra ingresada por el usuario. El bucle debería detenerse cuando el índice de la palabra ingresada por el usuario es igual a la longitud de note_list menos uno. El código modificado se vería así:

    def test():
    
    users_note = """Existe una necesidad sustancial de apoyo para la salud mental infantil -
                    la evidencia muestra que en cualquier año dado,
                    1 de cada 10 jóvenes tendrá un problema de salud mental diagnosticable.
                    De estos números increíblemente altos,
                    el 70% de estos jóvenes no reciben ningún tipo de apoyo adecuado para la salud mental,
                    y del 30% que sí lo hacen,
                    solo la mitad de ellos mejora.
                    Aunque tenemos técnicas de intervención basadas en evidencia que funcionan,
                    aún dependemos de tecnologías y mecanismos de entrega obsoletos.
                 """
    note_list = users_note.split()
    
    index = 0
    while index < len(note_list) - 1:
        word_list = input('Ingrese las palabras que va a decir a continuación: ').split()
        for word in word_list:
            if word not in note_list:
                print('Lo siento, intenta de nuevo')
            else:
                index = note_list.index(word)
                print(note_list[index + 1])
    else:
        break
    

Comments are closed.