Vamos a retomar nuestro asistente turístico, incluyendo lo que hemos aprendido de las listas abiertas para que aprenda conforme interacciona con el usuario.
Lista inicial
El programa que vamos a usar para crear la lista inicial de la categoría "alojamiento" es el siguiente:

Tú deberás completar esta parte del programa con las listas correspondientes a las demás necesidades.
Aprendizaje a partir de la conversación
La imagen presenta el programa que se asigna al "personaje", que es el que conversa con el usuario.
(Pincha en la imagen para verla más grande)

Analízalo y trata de entender su funcionamiento.
Explicación del programa 1. Se encuentra la "necesidad"
Vamos a dividir el programa en dos partes para entenderlo mejor:

En esta parte, el programa actúa inicialmente como lo conocíamos hasta ahora:
- Comprueba si la necesidad del usuario está en la lista correspondiente
- Si está, hace una sugerencia.
- Si no está, debería pasar a otra necesidad: esto debes completarlo tú, pues en el ejemplo sólo se contempla el "alojamiento"
Explicación del programa 2: No se encuentra la "necesidad": Aprender
Una vez acabadas todas las necesidades, si no ha encontrado la necesidad en ninguna de las listas, el asistente trata de aprender, iniciándose un nuevo código mediante el mensaje "aprender":

- En la modalidad de "aprender", el asistente pregunta si la necesidad tiene que ver con alguna de las categorías ya conocidas, empezando por el "alojamiento". Cuando encuentra alguna que corresponda, añade la palabra a la lista para que se quede registrada y además ofrece el consejo correspondiente.
- Si el usuario no encuadra la necesidad en ninguna de las categorías conocidas, el asistente reconoce su limitación y termina.
Para mayor claridad y evitar repeticiones, se ha separado el código en distintas acciones a las que se accede usando "mensajes".
Tú deberías completar esta parte del programa preguntando al usuario si la respuesta pertenece a alguna de las otras necesidades y haciendo que aprenda en caso afirmativo.
Programa de ejemplo
En la ventana siguiente puedes ver el funcionamiento del programa explicado.
Observa que no se borra la lista nunca, salvo que detengas el programa y borres elementos manualmente.
El programador tendrá que revisar la lista a menudo para comprobar que son correctos los elementos que el usuario ha ido añadiendo, borrando los que sean incorrectos porque estén mal escritos o no correspondan con la necesidad.