Cómo crear la función de consulta de diccionario en python en la frambuesa pi

Video: Raspberry Pi LESSON 29: Using GPIO pins as Inputs and Reading them in Python

Para ir más allá de las funciones básicas en Python, crear el diccionario de mirar hacia arriba función. La Raspberry Pi le permite construir una función que toma el texto y los controles del jugador por cualquier respuesta pertinentes. Para ello, vamos a usar diccionarios y funciones, y agrega en algunas nuevas ideas relacionadas con lazos, cadenas y toma de decisiones.

Video: Программирование на python для Raspberry Pi

La función es de sólo 12 líneas de largo, pero es muy sofisticado. Se tiene que tomar lo que el jugador entró, y comprobar cada palabra en ella para ver si el diccionario tiene una respuesta para esa palabra. El jugador puede utilizar más de una palabra que está en el diccionario.

Por ejemplo, si el jugador dice “Me encanta la música pop”, las palabras amor y música podrían estar ambos en el diccionario. Como alternativa, el jugador puede utilizar las palabras no reconoce el programa, por lo que necesita para diseñar su función para hacer frente a esa situación también.

Aquí está la función en su totalidad, por lo que se puede ver cómo todos los bits encajan entre sí:

def dictionarycheck (mensaje): mensaje = message.lower () playerwords = message.split () smartreplies = [] para eachword en playerwords: si eachword en chatdictry: respuesta = chatdictry [eachword] smartreplies.append (respuesta) si smartreplies: replychosen = random.randint (0, len (smartreplies)) - 1RETURN smartreplies [replychosen] cosa: retorno "

Las siguientes dos líneas introducen métodos de las cadenas. Estos son como funciones integradas que están unidos a una cadena y lo transforman de alguna manera. los inferior() método convierte una cadena en minúsculas. Esto es importante porque si un jugador usa mayúsculas o mayúsculas y minúsculas, que no coincidirán con las palabras minúsculas que ha utilizado en sus claves de diccionario.

En lo que se refiere al programa, Hola y Hola No son la misma cosa. los división() método toma una cadena y lo divide en una lista de sus palabras constituyentes. Las dos primeras líneas en nuestra función, entonces, a su vez el contenido de la variable mensaje en una versión en minúsculas de sí mismo, y luego crear una nueva lista de las palabras que el jugador inscrito, llamados playerwords.

Vas a almacenar posibles respuestas al jugador en una lista llamada smartreplies, de modo que a medida que crear una lista vacía.

El siguiente paso es la creación de un bucle que pasa a través de la lista de palabras que el jugador entró a su vez. Cuando se utiliza una para lazo, usted va a trabajar su camino a través de una lista de palabras. Cada vez alrededor del bucle, la variable cada palabra contiene el siguiente elemento de la lista de palabras que el jugador ha introducido.

La siguiente línea introduce una nueva idea, el sentencia condicional, que comienza con Si. Una sentencia condicional se utiliza para activar el equipo para tomar una decisión sobre si se debe llevar a cabo ciertas instrucciones. Usted vendrá a través de ella en casi todos los programas que escribe. En este caso, se está utilizando para evitar el programa de detención e informar un error si se intenta utilizar una clave que no está en el diccionario:

 si eachword en chatdictry: respuesta = chatdictry [eachword] smartreplies.append (respuesta)

los cada palabra variable contiene una de las palabras que el jugador inscrito, por lo que la Si comprueba si la declaración de que la palabra está en el diccionario y sólo realiza las siguientes dos instrucciones si que son.

Observe cómo se utiliza la sangría aquí para mostrar que ordena pertenecer juntos - en este caso, que los comandos son controlados por el Si declaración. Si la palabra está en el diccionario, el programa lo busca y añade la respuesta resultante de la smartreplies lista, usando adjuntar().

Este proceso se repite para cada palabra que el jugador entró, pero eso es todo lo que sucede en el bucle. La siguiente línea no tiene sangría debajo de la para declaración, así que no es controlado por ella.

Al salir del bucle, comprobar si la lista smartreplies tiene nada en ella, utilizando simplemente

 Si smartreplies:

En Inglés, esto significa “si smartreplies tiene un contenido en ella.”Los comandos de sangría debajo que se llevan a cabo sólo si se han añadido algunas entradas a la smartreplies lista, que sólo ocurre si una o más de las palabras que el jugador ha entrado no son encontradas en el diccionario.

En ese caso, que desea devolver uno de los elementos de la smartreplies lista para el programa principal, así que elige uno al azar de la lista y el uso regreso para enviar de vuelta al programa principal y salir de la función.

Después de eso, utilice el más mando. En la llanura Inglés, esto significa de otra manera, y está unida a la Si mando. Así que si smartreplies tiene un contenido en él, los comandos se lleva a cabo para devolver una respuesta adecuada, escogida al azar.

Cuando se encontró ninguna de las palabras del jugador en el diccionario y así smartreplies está vacía, las instrucciones debajo de la sangría más comando se llevan a cabo en su lugar. La función envía un mensaje vacío (“”) De nuevo al programa principal y sale de la función.

Artículos Relacionados