Entonces, dijiste que eres un “principiante extremo”, así que escribiré esto de una manera que cualquiera sea tu nivel (al que podría llamarse así), debería ser al menos un poco útil para ti. En la respuesta de Matt Maufe a ¿Cómo me convierto en un autodidacta para aprender a programar? En esta respuesta, describo rápidamente cómo comenzar a aprender, pero más importante para usted, los pasos clave a seguir antes de poder realizar un programa significativo. Si aún no ha aprendido cosas de allí (arreglos 1D, IO básico, bucles y declaraciones if, etc.), realmente no puede hacer un proyecto todavía (no sin buscarlo como necesite, pero al menos esto te da una idea de lo que es posible).
Si ya has aprendido todo eso, ¡salta por debajo de los garabatos!
Si quieres un programa primero ligeramente más simple (que el paso 1), prueba FizzBuzz: Para cada número de 0 a 100, imprime “Fizz” si es divisible por 3, “Buzz” si es divisible por 5, y “FizzBuzz” si es divisible por ambos.
~~~~~~~~~~~
- ¿Cuáles son las pequeñas cosas que podemos aprender día a día en YouTube dando media hora diaria?
- ¿Qué pasatiempo uno debería aprender en la vida para convertirse en un buen gerente / líder?
- Cómo empezar a aprender a invertir.
- ¿Qué proyectos de C ++ debo comenzar para aprender mucho?
- ¿Cuáles son los mejores lugares para aprender a dibujar en línea?
Personalmente, soy un fan de los chatbots! Sobre todo porque la mecánica subyacente es simple, y hay una amplia gama de ellos en términos de capacidad.
De lo más fácil a lo más difícil:
- Comenzando: toma la entrada del usuario, la agrega a una lista de cadenas que conoce e imprime una cadena aleatoria de la lista. Los datos no se conservan entre sesiones (después de cada sesión se olvida de todo lo que aprendió), y la conversación nunca tiene sentido, pero es divertida.
Necesitará conocer el IO básico (entrada de texto del usuario, impresión en pantalla), cómo escribir un bucle infinito y alguna forma de estructura de datos dinámica (por ejemplo, una lista de Python, Java ArrayList, C ++ Vector, etc.)
- Principiante: Más o menos lo mismo, pero esta vez, tiene dos estructuras (digamos que usó una Lista de Python). Uno llamado “Saludos”, uno llamado “Principal”.
Aquí, solo en su primera salida del chatbot, usted genera un elemento aleatorio de Greetings y la primera entrada del usuario (que también debe ser un saludo, de acuerdo con la forma en que funcionan las conversaciones) se almacena aquí.
Después de esto, ingresa al bucle infinito y las respuestas se toman de / se agregan a Main . Así que ahora tiene un poco más de sentido! Necesitarás el conocimiento de las declaraciones If.
- De acuerdo, ¡tener al menos una respuesta normal es genial! ¿Qué tal si tenemos más de ellos? Podemos hacer esto a través de un Diccionario (Python) o un Mapa. Un Diccionario / Mapa (digamos Diccionario, estoy usando la sintaxis de Pythonic) es básicamente dos arreglos, con un enlace entre cada elemento en uno (la clave) a otro elemento en el otro (valor A).
Intentemos tenerlo para que siempre que le digas al chatbot (¡no hagas esto en Greetings!) “ADDING PAIR”, te espera dos entradas más, una clave y un valor. Éstos se almacenan en el diccionario, y puede hacerlo (a través de una serie de declaraciones If) de modo que cada vez que ingrese el valor clave , el chatbot responderá con el valor asociado. Por ejemplo, imaginemos que usé “¿Cómo estás?” Como la clave y “¡Bien, gracias!” Como el valor.
Siempre que pregunte cómo es, responderá “¡Bien, gracias!”.
Después de agregar el par, se reanuda la actividad normal.
Como puede ver, básicamente estamos avanzando hacia una conversación menos aleatoria y más humana.
Para ello, deberás conocer los conceptos básicos de los diccionarios. Lo que describí brevemente más arriba no es suficiente, y se usan en muchas cosas.
Nota: Como es probable que dedique algún tiempo a hacer algunas respuestas agradables, como bono, asegúrese de que si escribe “IMPRIMIR”, imprima los diccionarios en su estado actual, para que pueda guardarlos. También haz que imprima los saludos / listas principales si lo deseas.
- Bien, ahora tenemos los bloques de construcción para hacer que (lenta, pero seguramente) actúe razonablemente humano. … Para una sesión. Entonces su amnesia a largo plazo entra en acción.
Así que perdemos todo ese trabajo duro, ¿verdad? (Si no hiciste la bonificación) Eso apesta.
A menos que persista nuestros datos! La forma más sencilla de hacer esto es volcar cada Lista / Diccionario en un archivo de texto separado en su computadora, y luego leerlos nuevamente. Para hacer esto, podemos usar “Pickle” 11.1. pickle – serialización de objetos Python – documentación de Python v3.1.5
Este bit implica un autoestudio, y necesitarás saber cómo leer documentos de Python y agregar una biblioteca, pero no es realmente difícil si puedes llegar tan lejos.
Cada vez que diga “SALIR”, debe volcar su memoria a corto plazo en archivos de texto y leerlos al comienzo del próximo programa, o usar valores predeterminados si no existen.
Más adelante, usaría una base de datos (lo más probable es que NoSQL o SQL) los almacene de una manera más estructurada e interesante en un servidor (varios usuarios pueden hablar con el mismo chatbot y aprender de todos ellos), pero para Ahora, esto funciona mejor.
- Esto es todo lo que he llegado (Paso 4 completo), realmente. ¡Pero sus próximos pasos (autoguiados) son aprender acerca de las bases de datos, las cadenas de Markov y demás, para hacerlo aún mejor!
¡Disfrutar!