diff --git a/ejercio3.ipynb b/ejercio3.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..3006eef6f2322b12e6316d4b3755e508d17eea07 --- /dev/null +++ b/ejercio3.ipynb @@ -0,0 +1,554 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# **Tarea 2. Ejercicio 3.**\n", + "## Daniel Brito.\n", + "## @britod" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1.- Entre en contacto con 10 estudiantes del curso de datos y 2 profesores o personal de soporte de LaConga, uno del curso de datos y otro de afuera, y consulte su nombre completo, su nombre de usuario en mattermost, edad, pais de origen, ciudad donde residen, su especialidad cientÃfica, nombre del instituto en que estudian/laboran, y un hobbie o afición." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2.- Cree un diccionario llamado “compasâ€, donde la llave sea el nombre de usuario en mattermost, y si depliego el valor almacenado, por ejemplo en compas[“juan-pinedaâ€], lo que obtengo es a la vez otro diccionario, con las llaves “nombreâ€, “apellidoâ€, “paÃsâ€, “residenciaâ€, “edadâ€, “instituciónâ€, “hobbieâ€." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3.- Cree una función que reciba como entrada el diccionario y un paÃs de origen, y retorne las informaciones completas de todas las personas de ese paÃs, tabuladas en una forma fácil de entender. Busque una forma de calcular, a partir del diccionario, el promedio de edad de todas las personas en él, y una forma de mostrar todas las instituciones (sin repetición)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Solución:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comenzamos creando los diccionarios de los compañeros de LA-CoNGA:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "nicole = {'Nombre':'Angie Nicole Hernández Durán','Edad':23,'Pais':'Colombia','Ciudad':'Bucaramanga','Especialidad':'Análisis de imagen médica','Instituto':'Universidad Industrial de Santander','Hobby':'Dibujar, Pintar, Hacer ejercicio'}\n", + "escalantee = {'Nombre':'Eduardo Enrique Escalante Rondón','Edad':46,'Pais':'Venezuela','Ciudad':'Barquisimeto','Especialidad':'Dinámica Molecular','Instituto':'Universidad Centroccidental Lisandro Alvarado','Hobby':'Leer y escuchar musica'}\n", + "bermudezj = {'Nombre':'Jesus David Bermudez Sanchez','Edad':25,'Pais':'Colombia','Ciudad':'Bogotá','Especialidad':'Estado Sólido','Instituto':'Universidad Nacional de Colombia','Hobby':'Senderismo y montar bicicleta.'}\n", + "britod = {'Nombre':'Daniel Arturo Brito Urbina','Edad':26,'Pais':'Venezuela','Ciudad':'Caracas','Especialidad':'TeorÃas de Campos','Instituto':'Universidad Central de Venezuela','Hobby':'Patinetas, bicicletas y video juegos.'}\n", + "aldo = {'Nombre':'Aldo Arriola Córdova','Edad':28,'Pais':'Perú','Ciudad':'Lima','Especialidad':'Magnetismo','Instituto':'Universidad Nacional de IngenierÃa','Hobby':'Música, pelÃculas y caminar.'}\n", + "reyesf = {'Nombre':'Felipe Reyes','Edad':22,'Pais':'Colombia','Ciudad':'Cali','Especialidad':'Materia Condensada','Instituto':'Universidad del Valle','Hobby':'Gimnasio.'}\n", + "gomezc = {'Nombre':'Carla Elena Gomez Alvarado','Edad':27,'Pais':'Venezuela','Ciudad':'Caracas','Especialidad':'Por definir - FÃsica Molecular / FÃsica del Estado Solido ','Instituto':'Universidad Simón BolÃvar ','Hobby':'Andar en bicicleta, electrónica, gastronomÃa.'}\n", + "ladinoj = {'Nombre':'Jose Miguel Ladino Méndez','Edad':24,'Pais':'Colombia','Ciudad':'Bogotá','Especialidad':'Mecánica Celeste Relativista','Instituto':'Universidad Nacional de Colombia','Hobby':'skate, ciclismo, guitarra eléctrica.'}\n", + "perezy = {'Nombre':'Yineth Melissa Pérez Ayala','Edad':29,'Pais':'Colombia','Ciudad':'Bogotá','Especialidad':'Nanoestructuras organometálicas','Instituto':'Universidad Nacional de Colombia','Hobby':'Voleibol y libros de ficción.'}\n", + "ramosd = {'Nombre':'David Ramos','Edad':24,'Pais':'Colombia','Ciudad':'Bucaramanga','Especialidad':'AstrofÃsica Relativista','Instituto':'Universidad Industrial de Santander','Hobby':'Tocar guitarra.'}\n", + "jal = {'Nombre':'José Antonio López','Edad':50,'Pais':'Venezuela','Ciudad':'Caracas','Especialidad':'FÃsico','Instituto':'Universidad Central de Venezuela','Hobby':'Excursionismo, cocinar, leer.'}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ahora creamos un diccionario llamado 'compas' donde las llaves son los usuarios en Mattermost y losvalores asociados a cada llave son los diccionarios que creamos en la celda anterior" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "compas = {'@nicole': nicole,'@escalantee':escalantee,'@bermudezj':bermudezj,'@britod':britod,'@aldo':aldo,'@reyesf':reyesf,'@gomezc':gomezc,'@ladinoj':ladinoj,'@perezy':perezy,'@ramosd':ramosd,'@jal':jal}" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Venezuela'" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Esta es una prueba sobre como citar los datos de un diccionario de diccionarios \n", + "compas['@britod']['Pais']" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_items([('@nicole', {'Nombre': 'Angie Nicole Hernández Durán', 'Edad': 23, 'Pais': 'Colombia', 'Ciudad': 'Bucaramanga', 'Especialidad': 'Análisis de imagen médica', 'Instituto': 'Universidad Industrial de Santander', 'Hobby': 'Dibujar, Pintar, Hacer ejercicio'}), ('@escalantee', {'Nombre': 'Eduardo Enrique Escalante Rondón', 'Edad': 46, 'Pais': 'Venezuela', 'Ciudad': 'Barquisimeto', 'Especialidad': 'Dinámica Molecular', 'Instituto': 'Universidad Centroccidental Lisandro Alvarado', 'Hobby': 'Leer y escuchar musica'}), ('@bermudezj', {'Nombre': 'Jesus David Bermudez Sanchez', 'Edad': 25, 'Pais': 'Colombia', 'Ciudad': 'Bogotá', 'Especialidad': 'Estado Sólido', 'Instituto': 'Universidad Nacional de Colombia', 'Hobby': 'Senderismo y montar bicicleta.'}), ('@britod', {'Nombre': 'Daniel Arturo Brito Urbina', 'Edad': 26, 'Pais': 'Venezuela', 'Ciudad': 'Caracas', 'Especialidad': 'TeorÃas de Campos', 'Instituto': 'Universidad Central de Venezuela', 'Hobby': 'Patinetas, bicicletas y video juegos.'}), ('@aldo', {'Nombre': 'Aldo Arriola Córdova', 'Edad': 28, 'Pais': 'Perú', 'Ciudad': 'Lima', 'Especialidad': 'Magnetismo', 'Instituto': 'Universidad Nacional de IngenierÃa', 'Hobby': 'Música, pelÃculas y caminar.'}), ('@reyesf', {'Nombre': 'Felipe Reyes', 'Edad': 22, 'Pais': 'Colombia', 'Ciudad': 'Cali', 'Especialidad': 'Materia Condensada', 'Instituto': 'Universidad del Valle', 'Hobby': 'Gimnasio.'}), ('@gomezc', {'Nombre': 'Carla Elena Gomez Alvarado', 'Edad': 27, 'Pais': 'Venezuela', 'Ciudad': 'Caracas', 'Especialidad': 'Por definir - FÃsica Molecular / FÃsica del Estado Solido ', 'Instituto': 'Universidad Simón BolÃvar ', 'Hobby': 'Andar en bicicleta, electrónica, gastronomÃa.'}), ('@ladinoj', {'Nombre': 'Jose Miguel Ladino Méndez', 'Edad': 24, 'Pais': 'Colombia', 'Ciudad': 'Bogotá', 'Especialidad': 'Mecánica Celeste Relativista', 'Instituto': 'Universidad Nacional de Colombia', 'Hobby': 'skate, ciclismo, guitarra eléctrica.'}), ('@perezy', {'Nombre': 'Yineth Melissa Pérez Ayala', 'Edad': 29, 'Pais': 'Colombia', 'Ciudad': 'Bogotá', 'Especialidad': 'Nanoestructuras organometálicas', 'Instituto': 'Universidad Nacional de Colombia', 'Hobby': 'Voleibol y libros de ficción.'}), ('@ramosd', {'Nombre': 'David Ramos', 'Edad': 24, 'Pais': 'Colombia', 'Ciudad': 'Bucaramanga', 'Especialidad': 'AstrofÃsica Relativista', 'Instituto': 'Universidad Industrial de Santander', 'Hobby': 'Tocar guitarra.'}), ('@jal', {'Nombre': 'José Antonio López', 'Edad': 50, 'Pais': 'Venezuela', 'Ciudad': 'Caracas', 'Especialidad': 'FÃsico', 'Instituto': 'Universidad Central de Venezuela', 'Hobby': 'Excursionismo, cocinar, leer.'})])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Si queremos crear nuestra función que compare un pais de entrada con la informacion que tiene registrada en el diccinario\n", + "## que se ingresa. Necesitamos una forma de acceder a los datos de forma que podamos utilizar variables que podamos recorrer\n", + "### de forma simple, por ejemplo con un caracter numérico como en el caso de tuplas o listas.\n", + "#### Vamos a usar como inspiracion el comando .items()\n", + "compas.items()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La celda anterior muestra los items que tiene el diccionario de la siguiente forma:\n", + "* El diccionario contiene una lista.\n", + "* Los elementos de la lista son tuplas con la información de cada estudiante.\n", + "* El primer elemento de la tupla es el usuario Mattermost de cada estudiante/profesor y el segundo elemento es el diccionario creado al inicio con toda la información correspondiente." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['@nicole', '@escalantee', '@bermudezj', '@britod', '@aldo', '@reyesf', '@gomezc', '@ladinoj', '@perezy', '@ramosd', '@jal']\n", + "[('@nicole', {'Nombre': 'Angie Nicole Hernández Durán', 'Edad': 23, 'Pais': 'Colombia', 'Ciudad': 'Bucaramanga', 'Especialidad': 'Análisis de imagen médica', 'Instituto': 'Universidad Industrial de Santander', 'Hobby': 'Dibujar, Pintar, Hacer ejercicio'}), ('@escalantee', {'Nombre': 'Eduardo Enrique Escalante Rondón', 'Edad': 46, 'Pais': 'Venezuela', 'Ciudad': 'Barquisimeto', 'Especialidad': 'Dinámica Molecular', 'Instituto': 'Universidad Centroccidental Lisandro Alvarado', 'Hobby': 'Leer y escuchar musica'}), ('@bermudezj', {'Nombre': 'Jesus David Bermudez Sanchez', 'Edad': 25, 'Pais': 'Colombia', 'Ciudad': 'Bogotá', 'Especialidad': 'Estado Sólido', 'Instituto': 'Universidad Nacional de Colombia', 'Hobby': 'Senderismo y montar bicicleta.'}), ('@britod', {'Nombre': 'Daniel Arturo Brito Urbina', 'Edad': 26, 'Pais': 'Venezuela', 'Ciudad': 'Caracas', 'Especialidad': 'TeorÃas de Campos', 'Instituto': 'Universidad Central de Venezuela', 'Hobby': 'Patinetas, bicicletas y video juegos.'}), ('@aldo', {'Nombre': 'Aldo Arriola Córdova', 'Edad': 28, 'Pais': 'Perú', 'Ciudad': 'Lima', 'Especialidad': 'Magnetismo', 'Instituto': 'Universidad Nacional de IngenierÃa', 'Hobby': 'Música, pelÃculas y caminar.'}), ('@reyesf', {'Nombre': 'Felipe Reyes', 'Edad': 22, 'Pais': 'Colombia', 'Ciudad': 'Cali', 'Especialidad': 'Materia Condensada', 'Instituto': 'Universidad del Valle', 'Hobby': 'Gimnasio.'}), ('@gomezc', {'Nombre': 'Carla Elena Gomez Alvarado', 'Edad': 27, 'Pais': 'Venezuela', 'Ciudad': 'Caracas', 'Especialidad': 'Por definir - FÃsica Molecular / FÃsica del Estado Solido ', 'Instituto': 'Universidad Simón BolÃvar ', 'Hobby': 'Andar en bicicleta, electrónica, gastronomÃa.'}), ('@ladinoj', {'Nombre': 'Jose Miguel Ladino Méndez', 'Edad': 24, 'Pais': 'Colombia', 'Ciudad': 'Bogotá', 'Especialidad': 'Mecánica Celeste Relativista', 'Instituto': 'Universidad Nacional de Colombia', 'Hobby': 'skate, ciclismo, guitarra eléctrica.'}), ('@perezy', {'Nombre': 'Yineth Melissa Pérez Ayala', 'Edad': 29, 'Pais': 'Colombia', 'Ciudad': 'Bogotá', 'Especialidad': 'Nanoestructuras organometálicas', 'Instituto': 'Universidad Nacional de Colombia', 'Hobby': 'Voleibol y libros de ficción.'}), ('@ramosd', {'Nombre': 'David Ramos', 'Edad': 24, 'Pais': 'Colombia', 'Ciudad': 'Bucaramanga', 'Especialidad': 'AstrofÃsica Relativista', 'Instituto': 'Universidad Industrial de Santander', 'Hobby': 'Tocar guitarra.'}), ('@jal', {'Nombre': 'José Antonio López', 'Edad': 50, 'Pais': 'Venezuela', 'Ciudad': 'Caracas', 'Especialidad': 'FÃsico', 'Instituto': 'Universidad Central de Venezuela', 'Hobby': 'Excursionismo, cocinar, leer.'})]\n" + ] + } + ], + "source": [ + "# Vamos a intentar recorrer los elementos del diccionario compas de la siguiente forma:\n", + "\n", + "lista_prueba = [] # Creamos una lista vacia, sonde se supone vamos a guardar la info del diccionario compas\n", + "for k in compas: # Con este 'for' vamos a recorrer los elementos del diccionario compas.\n", + " ## Los k que pertenecen a compas son las llaves del diccionario, es decir, objetos tipo cadenas (strings).\n", + " \n", + " lista_prueba.append(k) # Aquà vamos a agregar las llaves de compas a lanueva lista que creamos.\n", + " ## Esto lo vamos a hacer con el fin de poder acceder a la información del diccionario usando\n", + " ### una etiqueta numérica que vamos a definir en un momento.\n", + " \n", + "print(lista_prueba) # -----------------------------------> LISTA ARMADA CON LOS mattermost\n", + "\n", + "lista_prueba2 = lista_prueba.copy() # Aquà creamos un clon para poder trabajar sobre el sin perder información.\n", + "\n", + "for n in range(0,len(lista_prueba),1): # Aquà estamos definiendo la variable numérica que mencionamos hace un momento.\n", + " ## Con esta variable vamos a acceder a la información del diccionario por medio de \n", + " ### un caracter numérico.\n", + " lista_prueba2[n] = (lista_prueba[n],compas[lista_prueba[n]]) # Cambiamos el valor del elemento n de la lista clon\n", + " ## por una tupla que contenga como primera entrada el \n", + " ### el usuario en Mattermost y como segunda entrada la \n", + " #### información contenida en el diccionario respectivo\n", + " \n", + "print(lista_prueba2) # Esta es la lista que contiene la misma información que el diccionario compas. La diferencia es que \n", + " ## ahora podemos acceder a los datos de dicha lista utilizando caracteres numericos que son mas simples\n", + " ### para recorrer." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Venezuela'" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Esta es una prueba, vamos a conocer el PaÃs al que pertenece el compañero en la posición 3 de lista. Recordemos que la\n", + "## la informacion del paÃs esta dentro del elemento de la lista, dentro de una tupla, que a si vez contiene un diccionario\n", + "lista_prueba2[3][1]['Pais'] # [3]: compañero en la posicion 3 de la lista.\n", + " ## [1]: elemto de la tupla que contiene la información solicitada.\n", + " ### ['Pais']: Pais al que pertenece." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ahora, estamos listos para definir nuestra funcion que proporcione los compañeros que pertenecen a un paÃs." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# Primero definimos una función que acepte como entradas: un diccionario del cual obtener información \n", + "## y un Pais con el cual comparar.\n", + "\n", + "def toma_1(diccionario,Pais):\n", + " v = True # Esta variable corrobora si podemos imprimir o no un resultado\n", + " if type(diccionario) == dict: # Corroboramos que la entrada sea un objeto tipo diccionario.\n", + " print('Muy bien, es un diccionario :)')\n", + " else:\n", + " print('Por favor ingrese un diccionario')\n", + " v= False\n", + " \n", + " if type(Pais) != str : # Corroboramos que el paÃs de entrada sea un objeto tipo string.\n", + " print('Por favor, ingresa una cadena')\n", + " v = False\n", + " \n", + " # Aquà vamos a colocoar el código que construimos en In[5] \n", + " lista_prueba = [] # Creamos una lista vacia, sonde se supone vamos a guardar la info del diccionario compas\n", + " for k in compas: # Con este 'for' vamos a recorrer los elementos del diccionario compas.\n", + " ## Los k que pertenecen a compas son las llaves del diccionario, es decir, objetos tipo cadenas (strings).\n", + " \n", + " lista_prueba.append(k) # Aquà vamos a agregar las llaves de compas a lanueva lista que creamos.\n", + " ## Esto lo vamos a hacer con el fin de poder acceder a la información del diccionario usando\n", + " ### una etiqueta numérica que vamos a definir en un momento.\n", + " \n", + " # print(lista_prueba) # -----------------------------------> LISTA ARMADA CON LOS mattermost\n", + "\n", + " lista_prueba2 = lista_prueba.copy() # Aquà creamos un clon para poder trabajar sobre el sin perder información.\n", + "\n", + " for n in range(0,len(lista_prueba),1): # Aquà estamos definiendo la variable numérica que mencionamos hace un momento.\n", + " ## Con esta variable vamos a acceder a la información del diccionario por \n", + " ### medio de un caracter numérico.\n", + " \n", + " lista_prueba2[n] = (lista_prueba[n],compas[lista_prueba[n]]) # Cambiamos el valor del elemento n de la lista clon\n", + " ## por una tupla que contenga como primera entrada el \n", + " ### el usuario en Mattermost y como segunda entrada la \n", + " #### información contenida en el diccionario respectivo\n", + " \n", + " # print(lista_prueba2) # Esta es la lista que contiene la misma información que el diccionario compas. \n", + " ## La diferencia es que ahora podemos acceder a los datos de dicha lista utilizando caracteres \n", + " ### numericos que son mas simples para recorrer.\n", + " info_solicitada = []\n", + " for l in range(0,len(lista_prueba2),1):\n", + " if Pais == lista_prueba2[l][1]['Pais']:\n", + " info_solicitada.append(lista_prueba2[l][1])\n", + " \n", + " if v==True:\n", + " return info_solicitada" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Muy bien, es un diccionario :)\n" + ] + }, + { + "data": { + "text/plain": [ + "[{'Nombre': 'Angie Nicole Hernández Durán',\n", + " 'Edad': 23,\n", + " 'Pais': 'Colombia',\n", + " 'Ciudad': 'Bucaramanga',\n", + " 'Especialidad': 'Análisis de imagen médica',\n", + " 'Instituto': 'Universidad Industrial de Santander',\n", + " 'Hobby': 'Dibujar, Pintar, Hacer ejercicio'},\n", + " {'Nombre': 'Jesus David Bermudez Sanchez',\n", + " 'Edad': 25,\n", + " 'Pais': 'Colombia',\n", + " 'Ciudad': 'Bogotá',\n", + " 'Especialidad': 'Estado Sólido',\n", + " 'Instituto': 'Universidad Nacional de Colombia',\n", + " 'Hobby': 'Senderismo y montar bicicleta.'},\n", + " {'Nombre': 'Felipe Reyes',\n", + " 'Edad': 22,\n", + " 'Pais': 'Colombia',\n", + " 'Ciudad': 'Cali',\n", + " 'Especialidad': 'Materia Condensada',\n", + " 'Instituto': 'Universidad del Valle',\n", + " 'Hobby': 'Gimnasio.'},\n", + " {'Nombre': 'Jose Miguel Ladino Méndez',\n", + " 'Edad': 24,\n", + " 'Pais': 'Colombia',\n", + " 'Ciudad': 'Bogotá',\n", + " 'Especialidad': 'Mecánica Celeste Relativista',\n", + " 'Instituto': 'Universidad Nacional de Colombia',\n", + " 'Hobby': 'skate, ciclismo, guitarra eléctrica.'},\n", + " {'Nombre': 'Yineth Melissa Pérez Ayala',\n", + " 'Edad': 29,\n", + " 'Pais': 'Colombia',\n", + " 'Ciudad': 'Bogotá',\n", + " 'Especialidad': 'Nanoestructuras organometálicas',\n", + " 'Instituto': 'Universidad Nacional de Colombia',\n", + " 'Hobby': 'Voleibol y libros de ficción.'},\n", + " {'Nombre': 'David Ramos',\n", + " 'Edad': 24,\n", + " 'Pais': 'Colombia',\n", + " 'Ciudad': 'Bucaramanga',\n", + " 'Especialidad': 'AstrofÃsica Relativista',\n", + " 'Instituto': 'Universidad Industrial de Santander',\n", + " 'Hobby': 'Tocar guitarra.'}]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Esta es la prueba que nuestra función definida retorna la información pedida\n", + "toma_1(compas,'Colombia')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Muy bien, es un diccionario :)\n" + ] + }, + { + "data": { + "text/plain": [ + "[{'Nombre': 'Eduardo Enrique Escalante Rondón',\n", + " 'Edad': 46,\n", + " 'Pais': 'Venezuela',\n", + " 'Ciudad': 'Barquisimeto',\n", + " 'Especialidad': 'Dinámica Molecular',\n", + " 'Instituto': 'Universidad Centroccidental Lisandro Alvarado',\n", + " 'Hobby': 'Leer y escuchar musica'},\n", + " {'Nombre': 'Daniel Arturo Brito Urbina',\n", + " 'Edad': 26,\n", + " 'Pais': 'Venezuela',\n", + " 'Ciudad': 'Caracas',\n", + " 'Especialidad': 'TeorÃas de Campos',\n", + " 'Instituto': 'Universidad Central de Venezuela',\n", + " 'Hobby': 'Patinetas, bicicletas y video juegos.'},\n", + " {'Nombre': 'Carla Elena Gomez Alvarado',\n", + " 'Edad': 27,\n", + " 'Pais': 'Venezuela',\n", + " 'Ciudad': 'Caracas',\n", + " 'Especialidad': 'Por definir - FÃsica Molecular / FÃsica del Estado Solido ',\n", + " 'Instituto': 'Universidad Simón BolÃvar ',\n", + " 'Hobby': 'Andar en bicicleta, electrónica, gastronomÃa.'},\n", + " {'Nombre': 'José Antonio López',\n", + " 'Edad': 50,\n", + " 'Pais': 'Venezuela',\n", + " 'Ciudad': 'Caracas',\n", + " 'Especialidad': 'FÃsico',\n", + " 'Instituto': 'Universidad Central de Venezuela',\n", + " 'Hobby': 'Excursionismo, cocinar, leer.'}]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Vamos a hacer otra prueba consultando lo miembros del diccionario que ertenecen al paÃs Venezuela\n", + "toma_1(compas,'Venezuela')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Vamos a modificar la función toma_1() para poder calcular, a partir del diccionario, el promedio de edad de todas las personas en él, y una forma de mostrar todas las instituciones (sin repetición)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def toma_2(diccionario,Pais):\n", + " v = True # Esta variable corrobora si podemos imprimir o no un resultado\n", + " if type(diccionario) == dict: # Corroboramos que la entrada sea un objeto tipo diccionario.\n", + " print('Muy bien, es un diccionario :)')\n", + " else:\n", + " print('Por favor ingrese un diccionario')\n", + " v= False\n", + " \n", + " if type(Pais) != str : # Corroboramos que el paÃs de entrada sea un objeto tipo string.\n", + " print('Por favor, ingresa una cadena')\n", + " v = False\n", + " \n", + " # Aquà vamos a colocoar el código que construimos en la celda numero 5. \n", + " lista_prueba = [] # Creamos una lista vacia, sonde se supone vamos a guardar la info del diccionario compas\n", + " for k in compas: # Con este 'for' vamos a recorrer los elementos del diccionario compas.\n", + " ## Los k que pertenecen a compas son las llaves del diccionario, es decir, objetos tipo cadenas (strings).\n", + " \n", + " lista_prueba.append(k) # Aquà vamos a agregar las llaves de compas a lanueva lista que creamos.\n", + " ## Esto lo vamos a hacer con el fin de poder acceder a la información del diccionario usando\n", + " ### una etiqueta numérica que vamos a definir en un momento.\n", + " \n", + " # print(lista_prueba) # -----------------------------------> LISTA ARMADA CON LOS mattermost\n", + "\n", + " lista_prueba2 = lista_prueba.copy() # Aquà creamos un clon para poder trabajar sobre el sin perder información.\n", + "\n", + " for n in range(0,len(lista_prueba),1): # Aquà estamos definiendo la variable numérica que mencionamos hace un momento.\n", + " ## Con esta variable vamos a acceder a la información del diccionario por \n", + " ### medio de un caracter numérico.\n", + " \n", + " lista_prueba2[n] = (lista_prueba[n],compas[lista_prueba[n]]) # Cambiamos el valor del elemento n de la lista clon\n", + " ## por una tupla que contenga como primera entrada el \n", + " ### el usuario en Mattermost y como segunda entrada la \n", + " #### información contenida en el diccionario respectivo\n", + " \n", + " # print(lista_prueba2) # Esta es la lista que contiene la misma información que el diccionario compas. \n", + " ## La diferencia es que ahora podemos acceder a los datos de dicha lista utilizando caracteres \n", + " ### numericos que son mas simples para recorrer.\n", + " info_solicitada = []\n", + " edad_total = 0\n", + " instituciones_de_educacion = []\n", + " for l in range(0,len(lista_prueba2),1):\n", + " if Pais == lista_prueba2[l][1]['Pais']:\n", + " info_solicitada.append(lista_prueba2[l][1])\n", + " \n", + " # Vamos a calcular el promedio de las edades de todos los miembros del diccionario en este mismo for\n", + " edad_total = edad_total + lista_prueba2[l][1]['Edad']\n", + " \n", + " # Vamos a almacenar la información referente a las instituciones educativas\n", + " instituciones_de_educacion.append(lista_prueba2[l][1]['Instituto'])\n", + " \n", + " # La lista instituciones_de_educacion tiene elementos repetidos, vamos a eliminarlos transformando la lista en un set()\n", + " # La respuesta la vamos a proporcionar en un formato de diccionario\n", + " respuesta = {'Estudiantes del paÃs ingrasado':info_solicitada, 'Edad promedio': edad_total/(len(compas)),'Instituciones':set(instituciones_de_educacion)}\n", + " if v==True:\n", + " return respuesta" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Muy bien, es un diccionario :)\n" + ] + }, + { + "data": { + "text/plain": [ + "{'Estudiantes del paÃs ingrasado': [{'Nombre': 'Eduardo Enrique Escalante Rondón',\n", + " 'Edad': 46,\n", + " 'Pais': 'Venezuela',\n", + " 'Ciudad': 'Barquisimeto',\n", + " 'Especialidad': 'Dinámica Molecular',\n", + " 'Instituto': 'Universidad Centroccidental Lisandro Alvarado',\n", + " 'Hobby': 'Leer y escuchar musica'},\n", + " {'Nombre': 'Daniel Arturo Brito Urbina',\n", + " 'Edad': 26,\n", + " 'Pais': 'Venezuela',\n", + " 'Ciudad': 'Caracas',\n", + " 'Especialidad': 'TeorÃas de Campos',\n", + " 'Instituto': 'Universidad Central de Venezuela',\n", + " 'Hobby': 'Patinetas, bicicletas y video juegos.'},\n", + " {'Nombre': 'Carla Elena Gomez Alvarado',\n", + " 'Edad': 27,\n", + " 'Pais': 'Venezuela',\n", + " 'Ciudad': 'Caracas',\n", + " 'Especialidad': 'Por definir - FÃsica Molecular / FÃsica del Estado Solido ',\n", + " 'Instituto': 'Universidad Simón BolÃvar ',\n", + " 'Hobby': 'Andar en bicicleta, electrónica, gastronomÃa.'},\n", + " {'Nombre': 'José Antonio López',\n", + " 'Edad': 50,\n", + " 'Pais': 'Venezuela',\n", + " 'Ciudad': 'Caracas',\n", + " 'Especialidad': 'FÃsico',\n", + " 'Instituto': 'Universidad Central de Venezuela',\n", + " 'Hobby': 'Excursionismo, cocinar, leer.'}],\n", + " 'Edad promedio': 29.454545454545453,\n", + " 'Instituciones': {'Universidad Central de Venezuela',\n", + " 'Universidad Centroccidental Lisandro Alvarado',\n", + " 'Universidad Industrial de Santander',\n", + " 'Universidad Nacional de Colombia',\n", + " 'Universidad Nacional de IngenierÃa',\n", + " 'Universidad Simón BolÃvar ',\n", + " 'Universidad del Valle'}}" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "toma_2(compas,'Venezuela')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}