diff --git a/ejercicio3.ipynb b/ejercicio3.ipynb index d010289c7aa2a84ef3c415333e02f6e70043fcc8..08333e486076da13c63e96284a2421e807129b71 100644 --- a/ejercicio3.ipynb +++ b/ejercicio3.ipynb @@ -18,19 +18,29 @@ "## El problema que se debe resolver presenta el siguiente enunciado:\n", "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\n", "\n", + "+ ## Parte 1\n", "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 esa la vez otro diccionario, con las llaves “nombreâ€, “apellidoâ€, “paÃsâ€, “residenciaâ€, “edadâ€,“instituciónâ€, “hobbieâ€\n", "\n", - "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)" + "+ ## Parte 2\n", + "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.\n", + "\n", + "\n", + "+ ## Parte 3\n", + "Busque una forma de calcular, a partir del diccionario, el promedio de edad de todas las personas en él.\n", + "\n", + "+ ## Parte 4\n", + "Busque una forma de mostrar todas las instituciones (sin repetición)" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "compas={\n", - "\"juan-pineda\":{\"nombres\":\"Juan Carlos\",\"apellidos\":\"Basto Pineda\",\"edad\":30,\"pais\":\"Colombia\",\"residencia\":\"Santander\",\"especialidad cientifica\":\"Astronomia\",\"institucion\":\"Universidad Industrial de Santander\",\"hobbie\":\"divulgacion cientifica\"},\n", + "\"juan-pineda\":\n", + "{\"nombres\":\"Juan Carlos\",\"apellidos\":\"Basto Pineda\",\"edad\":30,\"pais\":\"Colombia\",\"residencia\":\"Santander\",\"especialidad cientifica\":\"Astronomia\",\"institucion\":\"Universidad Industrial de Santander\",\"hobbie\":\"divulgacion cientifica\"},\n", "\"camacho.reina\":\n", "{\"nombres\":\"Reina\",\"apellidos\":\"Camacho Toro\",\"edad\":35,\"pais\":\"Venezuela\",\"residencia\":\"Francia\",\"especialidad cientifica\":\"Fisica Experimental\",\"institucion\":\"CNRS\",\"hobbie\":\"avistamiento de aves\"},\n", "\"britod\":\n", @@ -58,31 +68,91 @@ "}" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Algunos ejemplos de como de imprime la informacion de las personas" + ] + }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 18, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "----------------------------------------------------\n", - "nombres : Reina\n", - "apellidos : Camacho Toro\n", - "pais : Venezuela\n", - "residencia : Francia\n", - "edad : 36\n", - "institucion : CNRS\n", - "hobbie : avistamiento de aves\n", - "usuario mattermost : camacho.reina\n", - "\n" - ] + "data": { + "text/plain": [ + "{'nombres': 'Felipe',\n", + " 'apellidos': 'Reyes',\n", + " 'edad': 22,\n", + " 'pais': 'Colombia',\n", + " 'residencia': 'Cali',\n", + " 'especialidad cientifica': 'Materia Condensada',\n", + " 'institucion': 'Universidad del Valle',\n", + " 'hobbie': 'gimnasio'}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "compas[\"reyesf\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'nombres': 'Yhony',\n", + " 'apellidos': 'Mamamni Arce',\n", + " 'edad': 26,\n", + " 'pais': 'Perú',\n", + " 'residencia': 'Lima',\n", + " 'especialidad cientifica': 'Fisica del Estado Solido',\n", + " 'institucion': 'Universidad Nacional Mayor de San Marcos',\n", + " 'hobbie': 'correr, natacion, leer'}" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "def info_por_paises(x,y):\n", + "# Usando tab completa el nombre de la key. Curioso\n", + "compas[\"mamaniy\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Falta explicacion" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "def info_por_paises(x,y,z=False):\n", + " \"\"\"\n", + " Esta funcion recibe el diccionario compas en el primer argumento, \n", + " una variable de tipo string con el pais de origen y una\n", + " variable Booleana si el usuario desea que en la información que \n", + " se imprime, aparezca ademas de todo, el usuario de Mattermost\n", + " \n", " \n", + " Retorna la informacion de las personas originarias del pais y\n", + " \"\"\"\n", " # Hago una copia del diccionario compas\n", " copia_compas=x.copy()\n", " \n", @@ -92,172 +162,245 @@ " # Esta parte añade la key=\"usuario mattermost\"\n", " # a los diccionarios que contienen la informacion \n", " # de los compas.\n", - " for r in keys_and_values:\n", - " copia_compas[r[0]][\"usuario mattermost\"]=r[0]\n", - " \n", - " lista_paises=[]\n", - " \n", - " # Hago una lista de los paises de origen de los compas\n", - " # Esta lista puede contener elementos repetidos\n", - " for f in keys_and_values:\n", - " lista_paises.append(copia_compas[f[0]][\"pais\"])\n", - " \n", - " set_paises=set(lista_paises)\n", + " if z:\n", + " for r in keys_and_values:\n", + " copia_compas[r[0]][\"usuario mattermost\"]=r[0]\n", " \n", " # Miro en cada \"subdiccionario\" el pais de origen,\n", " # si este coincide con el pais que se pidio, se imprime el subdiccionario \n", " # de manera bonita.\n", " \n", - " # La inspiracion para imprimir bonito la saque de\n", - " # https://thispointer.com/python-4-ways-to-print-items-of-a-dictionary-line-by-line/\n", " for h in keys_and_values:\n", " if y==h[1][\"pais\"]:\n", " print(\"----------------------------------------------------\")\n", " for llave,valor in h[1].items():\n", " print(llave,\":\",valor)\n", " \n", - " return \"\"\n", - " \n", - " \n", - "print(info_por_paises(compas,\"Venezuela\")) " + " return \"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Ejemplos\n", + "\n", + "## Pais: *Venezuela*" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 21, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "{'nombres': 'Juan Carlos',\n", - " 'apellidos': 'Basto Pineda',\n", - " 'pais': 'Colombia',\n", - " 'residencia': 'Santander',\n", - " 'edad': '30',\n", - " 'institucion': 'Universidad Industrial de Santander',\n", - " 'hobbie': 'divulgacion cientifica'}" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------------------\n", + "nombres : Reina\n", + "apellidos : Camacho Toro\n", + "edad : 35\n", + "pais : Venezuela\n", + "residencia : Francia\n", + "especialidad cientifica : Fisica Experimental\n", + "institucion : CNRS\n", + "hobbie : avistamiento de aves\n", + "----------------------------------------------------\n", + "nombres : Daniel Arturo\n", + "apellidos : Brito Urbina\n", + "edad : 26\n", + "pais : Venezuela\n", + "residencia : Caracas\n", + "especialidad cientifica : Teorias de Campos\n", + "institucion : Universidad Central de Venezuela\n", + "hobbie : Patinetas, Bicicletas y Video juegos\n", + "----------------------------------------------------\n", + "nombres : Eduardo Enrique\n", + "apellidos : Escalante Rondon\n", + "edad : 45\n", + "pais : Venezuela\n", + "residencia : Barquisimeto\n", + "especialidad cientifica : Dianmica Molecula\n", + "institucion : Universidad Centroccidental Lisandro Alvarado\n", + "hobbie : Leer y Escuchar Musica\n", + "----------------------------------------------------\n", + "nombres : Carla Elena\n", + "apellidos : Gomez Alvarado\n", + "edad : 27\n", + "pais : Venezuela\n", + "residencia : Caracas\n", + "especialidad cientifica : Fisica Molecular\n", + "institucion : Universidad Simon Bolivar\n", + "hobbie : Andar en bicicleta, Electronica, Gastronomia\n", + "----------------------------------------------------\n", + "nombres : Maria Jose\n", + "apellidos : Ramos Sotillo\n", + "edad : 23\n", + "pais : Venezuela\n", + "residencia : Merida\n", + "especialidad cientifica : Fisica\n", + "institucion : Universidad de los Andes\n", + "hobbie : escribir\n", + "----------------------------------------------------\n", + "nombres : Gerardo Jesus\n", + "apellidos : Semprum Suarez\n", + "edad : 24\n", + "pais : Venezuela\n", + "residencia : Caracas\n", + "especialidad cientifica : GeofÃsica\n", + "institucion : Universidad Central de Venezuela\n", + "hobbie : Artes Marciales\n", + "\n" + ] } ], "source": [ - "compas[\"juan-pineda\"]" + "print(info_por_paises(compas,\"Venezuela\")) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Ejemplo\n", + "## Pais: *Peru*, retornando ademas el usuario de mattermost" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 23, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "{'nombres': 'Reina',\n", - " 'apellidos': 'Camacho Toro',\n", - " 'pais': 'Venezuela',\n", - " 'residencia': 'Francia',\n", - " 'edad': '36',\n", - " 'institucion': 'CNRS',\n", - " 'hobbie': 'avistamiento de aves'}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------------------\n", + "nombres : Luis Alberto\n", + "apellidos : Leon Andonayre\n", + "edad : 22\n", + "pais : Perú\n", + "residencia : Provincia Constituciona del Callao\n", + "especialidad cientifica : Gravitacion\n", + "institucion : Universidad Nacional Mayor de San Marcos\n", + "hobbie : Escuchar musica y tocar la guitarra\n", + "usuario mattermost : leonl\n", + "----------------------------------------------------\n", + "nombres : Yhony\n", + "apellidos : Mamamni Arce\n", + "edad : 26\n", + "pais : Perú\n", + "residencia : Lima\n", + "especialidad cientifica : Fisica del Estado Solido\n", + "institucion : Universidad Nacional Mayor de San Marcos\n", + "hobbie : correr, natacion, leer\n", + "usuario mattermost : mamaniy\n", + "\n" + ] } ], "source": [ - "compas[\"camacho.reina\"]" + "print(info_por_paises(compas,\"Perú\",True)) " ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 32, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'nombres': 'Jalil',\n", - " 'apellidos': 'Varela Manjarres',\n", - " 'pais': 'Colombia',\n", - " 'residencia': 'Valle',\n", - " 'edad': '25',\n", - " 'institucion': 'Universidad del Valle',\n", - " 'hobbie': 'viajar'}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "compas[\"jalil\"]" + "def promedio_edad_compas(x):\n", + " \"\"\"\n", + " Esta funcion recibe como unico argumento el diccionario compas.\n", + " \n", + " Retorna el promedio de las edades\n", + " \"\"\"\n", + " sub_diccionarios=x.values()\n", + " \n", + " edades=[value[\"edad\"] for value in sub_diccionarios]\n", + " \n", + " return sum(edades)/len(edades)" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 33, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "{'nombres': 'Jennifer',\n", - " 'apellidos': 'Grisales',\n", - " 'pais': 'Colombia',\n", - " 'residencia': 'Cucuta',\n", - " 'edad': '27',\n", - " 'institucion': 'Universidad Industrial de Santander',\n", - " 'hobbie': 'caminata y deporte'}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "27.615384615384617\n" + ] } ], "source": [ - "compas[\"grisalesj\"]" + "print(promedio_edad_compas(compas))" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "def instituciones_compas(x):\n", + " \"\"\"\n", + " Esta funcion recibe como unico argumento el diccionario compas.\n", + " \n", + " Retorna las instituciones de las personas sin repeticion\n", + " \"\"\"\n", + " \n", + " dicc_personas=x.values()\n", + " \n", + " # Hago una lista de las instituciones donde estudian y/0 trabajan los compas\n", + " # Esta lista puede contener elementos repetidos\n", + " lista_insti=[dicc[\"institucion\"] for dicc in dicc_personas]\n", + " \n", + " set_insti=set(lista_insti)\n", + " for insti in set_insti:\n", + " print(insti)\n", + " return \"\" " + ] + }, + { + "cell_type": "code", + "execution_count": 47, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "{'nombres': 'David',\n", - " 'apellidos': 'Ramos',\n", - " 'pais': 'Colombia',\n", - " 'residencia': 'Santander',\n", - " 'edad': '26',\n", - " 'institucion': 'Universidad Industrial de Santander',\n", - " 'hobbie': 'escuchar y tocar musica'}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "Universidad Nacional de Colombia\n", + "CNRS\n", + "Universidad Nacional Mayor de San Marcos\n", + "Universidad de los Andes\n", + "Universidad Simon Bolivar\n", + "Universidad del Valle\n", + "Universidad Central de Venezuela\n", + "Universidad Antonio Nariño\n", + "Universidad Industrial de Santander\n", + "Universidad Centroccidental Lisandro Alvarado\n", + "\n" + ] } ], "source": [ - "compas[\"ramosd\"]" + "\n", + "print(instituciones_compas(compas))" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "### Bibliografia\n", + "\n", + "+ Imprimir bonito el contenido de un diccionario: https://thispointer.com/python-4-ways-to-print-items-of-a-dictionary-line-by-line/" + ] } ], "metadata": {