From 401af217c3815d279733afb6a024b3c8d75929fa Mon Sep 17 00:00:00 2001 From: Gerardo Semprum <semprumg@jupyterMiLAB> Date: Mon, 8 Feb 2021 06:52:31 -0500 Subject: [PATCH] Notebook ejercicio 3 --- ejercicio3_SemprumG.ipynb | 440 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 440 insertions(+) create mode 100644 ejercicio3_SemprumG.ipynb diff --git a/ejercicio3_SemprumG.ipynb b/ejercicio3_SemprumG.ipynb new file mode 100644 index 0000000..3b58f28 --- /dev/null +++ b/ejercicio3_SemprumG.ipynb @@ -0,0 +1,440 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ejercicio 3. Amigos congueros.\n", + "#### Gerardo Semprúm.\n", + "#### Usuario de Mattermost: @semprumg\n", + "#### Universidad Central de Venezuela." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Entre en contacto con 10 estudiantes del curso de datos y 2 profesores de LaConga, uno del curso de datos y otro de afuera, y consulte su nombre completo, su nombre de usuario de mattermost, edad, pais de origen, ciudad donde residen, su especialidad cientifica, nombre del instituto(estudia/enseña)\n", + "y un hobbie.\n", + "\n", + "**Cree un diccionario llamado compas, donde la llave sea el nombre de usuario en mattermost y si despliego el valor almacenado, Ex: compas[\"juan pineda\"], lo que obtengo es a la vez otro diccionario con las llaves \"nombre\", \"apellido\", \"paÃs\", \"residencia\", \"edad\", \"institucion\", \"Hobbie\"**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Debemos crear un diccionario anidado (nested dictionary), el cual es un diccionario, en donde sus elementos llave (key) estan emparejados con elementos valor (value) que son a su vez otro diccionario.\n", + "\n", + "**Consejo importante:**\n", + "\n", + "\n", + " Para abrir un diccionario se usan {}.\n", + " Cada par k:v (llave,valor) debe estar separado por una coma del siguiente par k:v." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Persona 1': {'nombre': 'Pedro', 'Edad': 27}, 'Persona 2': {'nombre': 'Ana', 'Edad': 25}}\n" + ] + } + ], + "source": [ + "#Ejemplo: Creando un nested dictionary.\n", + "ex = {\n", + " \"Persona 1\":{\n", + " \"nombre\":\"Pedro\",\n", + " \"Edad\":27,\n", + " },\n", + "\n", + " \"Persona 2\":{\n", + " \"nombre\":\"Ana\",\n", + " \"Edad\":25,\n", + " },\n", + "}\n", + "print(ex)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "De manera más compleja y extensa, creamos un diccionario en donde almacenamos a nuestros 10 compañeros y 2 profesores de La-Conga:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "#Definimos nuestro diccionario como compas, en donde la llave es el usuario de mattermost de cada\n", + "#persona y el valor de dicha llave es el segundo diccionario que contiene la información general\n", + "\n", + "compas = {\n", + " \"semprumg\" : {\n", + " \"nombre\": \"Gerardo\",\n", + " \"apellido\": \"Semprúm\",\n", + " \"pais\": \"Venezuela\",\n", + " \"residencia\": \"Caracas\",\n", + " \"edad\": 24,\n", + " \"institución\": \"Universidad Central de Venezuela\",\n", + " \"hobbie\": \"VideoJuegos\",\n", + " },\n", + " \n", + " \"martinezj\" : {\n", + " \"nombre\":\"Jocabed\",\n", + " \"apellido\" : \"Martinez\",\n", + " \"pais\":\"Venezuela\",\n", + " \"residencia\":\"Caracas\",\n", + " \"edad\":22,\n", + " \"institución\":\"Universidad Central de Venezuela\",\n", + " \"hobbie\":\"Musica\",\n", + " },\n", + " \n", + " \"juan-pineda\" : {\n", + " \"nombre\": \"Juan C.\",\n", + " \"apellido\":\" B. Pineda\",\n", + " \"pais\":\"Colombia\",\n", + " \"residencia\":\"Bucaramanga\",\n", + " \"edad\":37,\n", + " \"institución\":\"Universidad Industrial de Santander\",\n", + " \"hobbie\":\"Caminatas en la naturaleza\",\n", + " },\n", + " \n", + " \"jal\" : {\n", + " \"nombre\": \"José A.\",\n", + " \"apellido\":\"Lopez\",\n", + " \"pais\":\"Venezuela\",\n", + " \"residencia\":\"Caracas\",\n", + " \"edad\":50,\n", + " \"institución\":\"Universidad Central de Venezuela\",\n", + " \"hobbie\":\"Excursionismo\", \n", + " },\n", + " \n", + " \"tugoresa\" : {\n", + " \"nombre\": \"Andrea\",\n", + " \"apellido\":\"Tugores\",\n", + " \"pais\":\"Venezuela\",\n", + " \"residencia\":\"Caracas\",\n", + " \"edad\":24,\n", + " \"institución\":\"Universidad Central de Venezuela\",\n", + " \"hobbie\":\"Tennis\",\n", + " },\n", + " \n", + " \"malamboj\": {\n", + " \"nombre\": \"Jorge\",\n", + " \"apellido\":\"Malambo\",\n", + " \"pais\":\"Colombia\",\n", + " \"residencia\":\"Bogota\",\n", + " \"edad\":39,\n", + " \"institución\":\" Universidad Nacional de Colombia\",\n", + " \"hobbie\":\"Talla en madera\",\n", + " },\n", + " \n", + " \"fernandezn\" :{\n", + " \"nombre\": \"Nicolás\",\n", + " \"apellido\":\"Fernandez\",\n", + " \"pais\":\"Argentina\",\n", + " \"residencia\":\"Perú\",\n", + " \"edad\":27,\n", + " \"institución\":\"Universidad Nacional Mayor de San Marcos\",\n", + " \"hobbie\":\"piano\",\n", + " },\n", + "\n", + " \"jalil\": {\n", + " \"nombre\": \"Jalil\",\n", + " \"apellido\":\"Varela\",\n", + " \"pais\":\"Colombia\",\n", + " \"residencia\":\"Colombia\",\n", + " \"edad\":26,\n", + " \"institución\":\"Universidad del Valle\",\n", + " \"hobbie\":\"trotar\",\n", + " },\n", + " \n", + " \"grisalesj\": {\n", + " \"nombre\": \"Jennifer\",\n", + " \"apellido\":\"Grisales\",\n", + " \"pais\":\"Colombia\",\n", + " \"residencia\":\"Bucaramanga\",\n", + " \"edad\":27,\n", + " \"institución\":\"Universidad Industrial de Santander\",\n", + " \"hobbie\":\"rugby\",\n", + " },\n", + " \n", + " \"bermudezj\": {\n", + " \"nombre\": \"Jesus D.\",\n", + " \"apellido\":\"Bermudez S.\",\n", + " \"pais\":\"Colombia\",\n", + " \"residencia\":\"Bogota\",\n", + " \"edad\":25,\n", + " \"institución\":\"Universidad Nacional de Colombia\",\n", + " \"hobbie\":\"Senderismo\",\n", + " },\n", + " \n", + " \"cristian.velandia\": {\n", + " \"nombre\": \"Cristian\",\n", + " \"apellido\":\"Velandia\",\n", + " \"pais\":\"Colombia\",\n", + " \"residencia\":\"Colombia\",\n", + " \"edad\":27,\n", + " \"institución\":\"Universidad Nacional de Colombia\",\n", + " \"hobbie\":\"Videojuegos\",\n", + " },\n", + " \n", + " \"acerot\":{\n", + " \"nombre\": \"Tatiana\",\n", + " \"apellido\":\"Acero C.\",\n", + " \"pais\":\"Colombia\",\n", + " \"residencia\":\"Colombia\",\n", + " \"edad\": 23,\n", + " \"institución\":\"Universidad Nacional de Colombia\",\n", + " \"hobbie\":\"Anime\",\n", + " },\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si queremos saber los datos de una persona contenida en esta lista solo es necesario llamar a los valores asociados a su llave (mattermost)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'nombre': 'Jennifer',\n", + " 'apellido': 'Grisales',\n", + " 'pais': 'Colombia',\n", + " 'residencia': 'Bucaramanga',\n", + " 'edad': 27,\n", + " 'institución': 'Universidad Industrial de Santander',\n", + " 'hobbie': 'rugby'}" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Pidiendo la información de un solo usuario:\n", + "compas[\"grisalesj\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Crear una funcion que reciba como entrada el diccionario y un paÃs de origen, y retorne las\n", + "informaciones completas de todas las personas de ese paÃs, tabuladas en una forma facil de entender.**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para crear una función pedimos a python que la defina y de que variable va a dependender, como se muestra en el ejemplo:" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "def Example(x):\n", + " mult= 5*x\n", + " return mult" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "25" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Example(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Definimos nuestra función que dependerá de un diccionario de nuestra elección y un elemento string str(), la función imprime un mensaje de orientación. \n", + "Seguidamente entramos en el primer ciclo for, que por cada \"matter\" que serian las llaves de cada pesona contenidas en el diccionario.\n", + "\n", + "Entramos en un condicional (if) de donde si el elemento contenido en dict[matter][\"pais\"] coincide con la string que ingresemos (que debe ser un paÃs). La función continuará a imprimir el Mattermost de cada persona en ese paÃs seguido de su información en forma de tabla." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "#Definiendo la funcion\n", + "def Compais(dict,str):\n", + " print(\"Los compas de\",str, \"que solicitaste son:\") #imprime un mensaje según la string\n", + " print()\n", + " for matter in dict.keys(): #Primer ciclo for, usa las key del diccionario\n", + " if dict[matter][\"pais\"] == str: #Condición de que la str sea igual a uno de los paises\n", + " print(\"Mattermost:\",[matter]) #Imprime el usuario de la persona\n", + " for k in dict[matter]: #Para los elementos k en el diccionario\n", + " print(k,\":\",dict[matter][k]) #imprime el par k,v del diccionario (datos personales)\n", + " print() #Imprime un espacio en blanco para mejor aspecto " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Según el diccionario creado, la función Compais acepta a los paises: Venezuela, Colombia y Argentina" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Los compas de Venezuela que solicitaste son:\n", + "\n", + "Mattermost: ['semprumg']\n", + "nombre : Gerardo\n", + "apellido : Semprúm\n", + "pais : Venezuela\n", + "residencia : Caracas\n", + "edad : 24\n", + "institución : Universidad Central de Venezuela\n", + "hobbie : VideoJuegos\n", + "\n", + "Mattermost: ['martinezj']\n", + "nombre : Jocabed\n", + "apellido : Martinez\n", + "pais : Venezuela\n", + "residencia : Caracas\n", + "edad : 22\n", + "institución : Universidad Central de Venezuela\n", + "hobbie : Musica\n", + "\n", + "Mattermost: ['jal']\n", + "nombre : José A.\n", + "apellido : Lopez\n", + "pais : Venezuela\n", + "residencia : Caracas\n", + "edad : 50\n", + "institución : Universidad Central de Venezuela\n", + "hobbie : Excursionismo\n", + "\n", + "Mattermost: ['tugoresa']\n", + "nombre : Andrea\n", + "apellido : Tugores\n", + "pais : Venezuela\n", + "residencia : Caracas\n", + "edad : 24\n", + "institución : Universidad Central de Venezuela\n", + "hobbie : Tennis\n", + "\n" + ] + } + ], + "source": [ + "#Para llamar a nuestra función solo llamamos al diccionario compas y el paÃs que deseamos\n", + "Compais(compas,'Venezuela')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Busque una forma de calcular, a partir del diccionario, el promedio de la edad de todas las personas en él , y una forma de mostrar todas las instituciones sin repetición.**" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Las edades de cada uno son: [24, 22, 37, 50, 24, 39, 27, 26, 27, 25, 27, 23]\n", + "El promedio de edad será: 29.25\n", + "Nuestras instituciones son: [' Universidad Nacional de Colombia', 'Universidad Central de Venezuela', 'Universidad Industrial de Santander', 'Universidad Nacional Mayor de San Marcos', 'Universidad Nacional de Colombia', 'Universidad del Valle']\n" + ] + } + ], + "source": [ + "#Para obtener un promedio de las edades usamos un loop e importamos una libreria de estadistica:\n", + "import statistics as stat \n", + "\n", + "prom_edad=[] #creamos la lista de promedio de edades\n", + "Unis=[] # Creamos la lista de Universidades presentes \n", + "\n", + "for matter in compas.keys(): #Iniciamos un ciclo for por cada elemento llave en el dict \"compas\"\n", + " prom_edad.append(compas[matter][\"edad\"]) #agregamos todas las edades en la lista de promedios\n", + " Unis.append(compas[matter][\"institución\"])#añadimos las universidades a la lista\n", + " Unis = set(Unis) #usamos \"set()\" para borrar elementos repetidos\n", + " Unis = sorted(Unis) #Usamos \"sorted()\" para ordenar las universidades en orden alfabetico\n", + "\n", + "print(\"Las edades de cada uno son:\",prom_edad) #imprimimos la lista completa de edades\n", + "\n", + "#En el argumento de print, usamos la función estadistica \".mean()\" que sirve para obtener el promedio\n", + "print(\"El promedio de edad será:\",stat.mean(prom_edad)) \n", + "\n", + "#Imprimimos nuestras instituciones\n", + "print(\"Nuestras instituciones son:\",Unis)" + ] + } + ], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} -- GitLab