Skip to content
Snippets Groups Projects
Commit cf21edc0 authored by María Ramos's avatar María Ramos
Browse files

archivos de tarea1

parent 405d62cc
No related branches found
No related tags found
No related merge requests found
.ipynb_checkpoints/
source diff could not be displayed: it is too large. Options to address this: view the blob.
%% Cell type:markdown id: tags:
### Estudiante: María José Ramos
# Análisis de Datos
## Módulo 1: Research Software Engineering in Python
### Tarea 1: Ejercicios para practicar las bases de Python.
**Ejercicio 1: Lista de palabras**
Escriba un programa en python que acepte una lista de palabras separadas por guiones, e imprima de vuelta las mismas palabras, sin repetición y nuevamente separadas por guiones, después de ordenarlas alfabéticamente.
Ejemplo de entrada: naranja-avión-melodía-tupla-avión
Salida esperada: avión-melodía-naranja-tupla
%% Cell type:markdown id: tags:
*1. Creando el código*
Para resolver este problema, el código aceptará una entrada tipo string. Al convertir el string en listas, cuyos elementos son las palabras dadas, se pueden aplicar cambios para ordenar a las mismas y quitar sus repeticiones. A la lista final, con las palabras en el orden adecuado y sin repeticiones se convierte en string y se devuelve como salida.
Nota: a medida que desarrollo el código, usaré el ejemplo de entrada y print() luego de los comandos, para comprobar que estoy obteniendo los resultados deseados en cada línea.
%% Cell type:code id: tags:
``` python
# Defino la variable que almacenará el input
palabras = str(input('Escriba una lista de palabras separadas por guiones: '))
print(palabras)
```
%% Output
Escriba una lista de palabras separadas por guiones: naranja-avión-melodía-tupla-avión
naranja-avión-melodía-tupla-avión
%% Cell type:code id: tags:
``` python
# Se convierte la entrada en lista usando .split
listaPal = palabras.split('-')
print(listaPal)
```
%% Output
['naranja', 'avión', 'melodía', 'tupla', 'avión']
%% Cell type:code id: tags:
``` python
# Con sorted() la lista se ordena en orden alfabético:
listaPalOrd = sorted(listaPal)
print(listaPalOrd)
```
%% Output
['avión', 'avión', 'melodía', 'naranja', 'tupla']
%% Cell type:code id: tags:
``` python
# Defino una nueva lista vacía para almacenar las palabras no repetidas
listaSinRep = []
# Y se agrega cada elemento de listaPalOrd solo si el elemento no está
# ya incluido. Así, se obtienen solo los elementos sin repetición.
[listaSinRep.append(i) for i in listaPalOrd if i not in listaSinRep]
print(listaSinRep)
```
%% Output
['avión', 'melodía', 'naranja', 'tupla']
%% Cell type:code id: tags:
``` python
# Utilizando .join se convierte listaSinRep en un string, con elementos
# separados por guion.
palabrasSeparadas= '-'.join(listaSinRep)
# Así, palabrasSeparadas es el output esperado:
print(palabrasSeparadas)
```
%% Output
avión-melodía-naranja-tupla
%% Cell type:markdown id: tags:
*2. Probando el código con otros ejemplos*
A continuación, definiré una función que guardará el código creado anteriormente, omitiendo los print luego de cada comando y solo conservando el print final. Luego, probaré la función con más entradas, para confirmar su funcionalidad.
%% Cell type:code id: tags:
``` python
def ordenarSinRep(palabras):
listaPal = palabras.split('-')
listaPalOrd = sorted(listaPal)
listaSinRep = []
[listaSinRep.append(i) for i in listaPalOrd if i not in listaSinRep]
palabrasSeparadas= '-'.join(listaSinRep)
print('Las palabras ordenadas alfabéticamente, sin repetición y '
f'separadas por guion: \n{palabrasSeparadas}')
return
palabras = str(input('Escriba una lista de palabras separadas por guiones: '))
ordenarSinRep(palabras)
```
%% Output
Escriba una lista de palabras separadas por guiones: datos-ciencia-python-ciencia-ciencia-jupyter
Las palabras ordenadas alfabéticamente, sin repetición y separadas por guion:
ciencia-datos-jupyter-python
%% Cell type:code id: tags:
``` python
# Un ejemplo más:
palabras = str(input('Escriba una lista de palabras separadas por guiones: '))
ordenarSinRep(palabras)
```
%% Output
Escriba una lista de palabras separadas por guiones: conga-datos-instrumentación-módulo-teoría
Las palabras ordenadas alfabéticamente, sin repetición y separadas por guion:
conga-datos-instrumentación-módulo-teoría
%% Cell type:markdown id: tags:
Y como se ha demostrado, el código funciona.
%% Cell type:code id: tags:
``` python
! jupyter nbconvert ejercicio1.ipynb --to html --output ejercicio1.html
```
%% Output
[NbConvertApp] Converting notebook ejercicio1.ipynb to html
[NbConvertApp] Writing 581588 bytes to ejercicio1.html
%% Cell type:code id: tags:
``` python
```
source diff could not be displayed: it is too large. Options to address this: view the blob.
%% Cell type:markdown id: tags:
### Estudiante: María José Ramos
# Análisis de Datos
## Módulo 1: Research Software Engineering in Python
### Tarea 1: Ejercicios para practicar las bases de Python.
**Ejercicio 2: Triángulo de Pascal**
a) Escriba una rutina en python que reciba como entrada un número entero, n, e imprima los números en la n-ésima fila del triángulo de Pascal. El programa debe verificar si el número n es entero, o arrojar un mensaje informando que ha habido un error del usuario en caso contrario.
b) Modifique la rutina anterior para que reciba un número variable de argumentos: n1, n2, n3,... y retorne una lista cuyo primer elemento es una lista conteniendo los números en la fila n1 del triángulo de Pascal, el segundo elemento una lista con los números en la fila n2, y así sucesivamente.
%% Cell type:markdown id: tags:
Para hallar los números de la fila n-ésima fila del triángulo de Pascal se consideran las siguientes ecuaciones:
Elemento de la fila n-ésima:
$_{n}C_{0}$, $_{n}C_{1}$ , ..., $_{n}C_{n-1}$ , $_{n}C_{n}$
para:
$_{n}C_{i} =$ $\frac{_{n}C_{i-1}+(n-i+1)}{i}$ donde $1 ≤ r ≤ n$ (Ec.1)
$_{n}C_{0} = 1 $ (Ec.2)
*Parte a.1: Creando las funciones*
A continuación, se muestran tres funciones:
1. La función *verificarEntero*, que recibe una entrada y verifica si esta es un número entero. Si no lo es, arroja un mensaje de error; en caso afirmativo, para este n entero, llamará a la siguiente funcion:
2. La función *imprimirPascal*, que imprime un string correspondiente a los elementos de una lista de la n-ésima fila del triángulo de Pascal. Esta lista la obtiene de la tercera función:
3. La función *filaNPascal*, que halla los valores de la n-ésima fila del triángulo de Pascal y los agrega a una lista.
%% Cell type:code id: tags:
``` python
# Función para verificar que la entrada sea un número entero
def verificarEntero():
# La función recibe una entrada
entrada = input('Introduce un número entero: ')
try:
numero = int(entrada)
# si se reconoce a la entrada como entero,
# se imprime lo que retorne filaNPascal
imprimirPascal(filaNPascal(numero))
except:
try:
numero = float(entrada)
# si es decimal, devuelve error y el porqué
print('Error. Has ingreado un número con decimales.')
except:
# si es otro tipo de entrada, envía error.
print('Error. Parece que la entrada no es un número entero')
return
```
%% Cell type:code id: tags:
``` python
# Función para imprimir la fila enésima de Pascal (listaP) como cadena
def imprimirPascal(listaP):
fila_n = listaP
# Creo una lista vacía
fila_str = []
for i in fila_n:
# Cada elemento de listaP se convierte en entero
# y se agrega a la lista
fila_str.append(str(i))
# Se convierte la lista en string y se imprime
print(' '.join(fila_str))
return
```
%% Cell type:code id: tags:
``` python
# Función para hallar la fila enésima de Pascal. Se consideran las
# ecuaciones (1 y 2) donde Ci-1 es valor_anterior
def filaNPascal(n):
valor_anterior = 1
# Se define una lista que en un prinipio solo contiene al
# valor anterior
fila_n = [valor_anterior]
if n != 0:
for i in range(1, n+1, 1):
valor_i = int((valor_anterior*(n-i+1))/i)
valor_anterior = valor_i
# Se agrega cada valor nuevo a la lista para formar
# todo el conjunto de números de Pascal
fila_n.append(valor_i)
return fila_n
```
%% Cell type:markdown id: tags:
*Parte a.2: Creando el programa*
El programa que llama a verificarEntero() se presenta con el siguiente código, el cual permite repetir la operación cuantas veces se desee:
%% Cell type:code id: tags:
``` python
# Se llama a la primera función, la cual pide la entrada y devuelve
# una salida sea los números de Pascal o un mensaje de error.
verificarEntero()
# Para repetir la operación, se hace una pregunta cuya respuesta
# se considera mediante while:
respuesta = str(input('¿Quieres intentarlo de nuevo? s/n: '))
while respuesta == 's':
verificarEntero()
respuesta = str(input('¿Quieres intentarlo de nuevo? s/n: '))
if respuesta == 'n':
print('Hasta luego')
# Entonces, se prueba el código ingresando los siguientes caracteres:
# 1, 2, 5.6, a, datos, 3, 4, 5
```
%% Output
Introduce un número entero: 1
1 1
¿Quieres intentarlo de nuevo? s/n: s
Introduce un número entero: 2
1 2 1
¿Quieres intentarlo de nuevo? s/n: s
Introduce un número entero: 5.6
Error. Has ingreado un número con decimales.
¿Quieres intentarlo de nuevo? s/n: s
Introduce un número entero: a
Error. Parece que la entrada no es un número entero
¿Quieres intentarlo de nuevo? s/n: s
Introduce un número entero: datos
Error. Parece que la entrada no es un número entero
¿Quieres intentarlo de nuevo? s/n: s
Introduce un número entero: 3
1 3 3 1
¿Quieres intentarlo de nuevo? s/n: s
Introduce un número entero: 4
1 4 6 4 1
¿Quieres intentarlo de nuevo? s/n: s
Introduce un número entero: 5
1 5 10 10 5 1
¿Quieres intentarlo de nuevo? s/n: n
Hasta luego
%% Cell type:markdown id: tags:
Con estos ejemplos, se ha comprobado que funciona el programa para (2.a) y las funciones que lo conforman.
*Parte b.1: modificando el código para un número variable de argumentos:*
Ahora, se agregará una nueva función llamada verificarLista, y se replantea la función verificarEntero como la función verificarElemento que devuelve booleanos.
1. La función *verificarLista* recibe una entrada tipo string a la cual convierte en una lista, y verifica si todos sus elementos son enteros llamando a la función *verificarElemento*. Si al menos uno de los elementos de la lista no es entero (False), envía mensaje de error. Si todos sus elementos son enteros, llama a la función _filaNPascal_ definida anteriormente.
2. La función *verificarElemento* devuelve True en caso de que el elemento es entero y False si no lo es.
%% Cell type:code id: tags:
``` python
# Función para verificar lista:
def verificarLista():
# La función recibe una entrada
numeros = str(input('Introduce los números enteros separados por coma: '))
# Separa los elementos del string con .split, creando una lista
lista_numeros = numeros.split(',')
# Para cada elemento de la lista se llama a la función
# verificarElemento.
entero_i = True
for i in lista_numeros:
entero_i = entero_i and verificarElemento(i)
# Si todos los elementos son enteros se obtiene True y
# se llama a filaNPascal para cada número. Se agregan
# las listas de Pascal a una nueva lista.
if entero_i == True:
listasPascal = []
for i in lista_numeros:
ni = int(i)
listasPascal.append(filaNPascal(ni))
print(listasPascal)
# Si al menos un elemento no es entero se obtiene
# False y se envía mensaje de error
else:
print('Eror, parece que al menos uno de los números no es '
'un número entero')
return
```
%% Cell type:code id: tags:
``` python
# Función para verificar que la entrada sea un número entero
def verificarElemento(entrada):
# la función recibe un elemento. Si es entero, retorna
# True y en cualquier otro caso False
try:
numero = int(entrada)
entero = True
except:
try:
numero = float(entrada)
entero = False
except:
entero = False
return entero
```
%% Cell type:markdown id: tags:
*Parte b.2: Creando el programa*
Como en el caso (a.2), el programa permite llamar a la función verificarLista() y luego de devolver la salida permite repetir la operación para introducir más caracteres.
%% Cell type:code id: tags:
``` python
# Programa principal
verificarLista()
respuesta = str(input('¿Quieres intentarlo de nuevo? s/n: '))
while respuesta == 's':
verificarLista()
respuesta = str(input('¿Quieres intentarlo de nuevo? s/n: '))
if respuesta == 'n':
print('Hasta luego')
# Ahora, se prueba el programa ingresando varias secuencias de números,
# ingresando una a una luego de responder s. Las secuencias son:
# 0, 1 ; 2, 3, 4 ; 1, 2, 3.5, 4 ; 6, conga, 8, ciencia ; 6, 8, 10:
```
%% Output
Introduce los números enteros separados por coma: 0, 1
[[1], [1, 1]]
¿Quieres intentarlo de nuevo? s/n: s
Introduce los números enteros separados por coma: 2, 3, 4
[[1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]
¿Quieres intentarlo de nuevo? s/n: s
Introduce los números enteros separados por coma: 1, 2, 3.5, 4
Eror, parece que al menos uno de los números no es un número entero
¿Quieres intentarlo de nuevo? s/n: s
Introduce los números enteros separados por coma: 6, conga, 8, ciencia
Eror, parece que al menos uno de los números no es un número entero
¿Quieres intentarlo de nuevo? s/n: s
Introduce los números enteros separados por coma: 6, 8, 10
[[1, 6, 15, 20, 15, 6, 1], [1, 8, 28, 56, 70, 56, 28, 8, 1], [1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]]
¿Quieres intentarlo de nuevo? s/n: n
Hasta luego
%% Cell type:markdown id: tags:
Con estos ejemplos se ha comprobado que funciona el programa (2.b) y se da por resuelto el ejercicio.
%% Cell type:code id: tags:
``` python
! jupyter nbconvert ejercicio2.ipynb --to html --output ejercicio2.html
```
%% Output
[NbConvertApp] Converting notebook ejercicio2.ipynb to html
[NbConvertApp] Writing 589889 bytes to ejercicio2.html
%% Cell type:code id: tags:
``` python
```
source diff could not be displayed: it is too large. Options to address this: view the blob.
%% Cell type:markdown id: tags:
### Estudiante: María José Ramos
# Análisis de Datos
## Módulo 1: Research Software Engineering in Python
### Tarea 1: Ejercicios para practicar las bases de Python.
**Ejercicio 3: Amigos congueros**
a) 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.
b) 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”.
c) (1) 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. (2) Busque una forma de calcular, a partir del diccionario, el promedio de edad de todas las personas en él, (3) y una forma de mostrar todas las instituciones (sin repetición)
%% Cell type:markdown id: tags:
*Parte b: Creando el diccionario*
Después de haber consultado los datos de las 12 personas de LA-CoNGA, puedo crear el diccionario *compas*, donde las llaves serán sus nombres de usuarios y a su vez, cada una llevará a un diccionario con su información.
%% Cell type:code id: tags:
``` python
compas = {'andreatugores' : {'Nombre' : 'Andrea', 'Apellido' : 'Tugores',
'Edad' : '23', 'País' : 'Venezuela',
'Residencia' : 'Caracas',
'Institución': 'Universidad Central de Venezuela',
'Hobbie' : 'Tennis'},
'ramosd' : {'Nombre' : 'David', 'Apellido' : 'Ramos', 'Edad' : '24',
'País' : 'Colombia','Residencia' : 'Bucaramanga',
'Institución': 'Universidad Industrial de Santander',
'Hobbie' : 'Tocar guitarra'},
'pinzonc' : {'Nombre' : 'Carlos', 'Apellido' : 'Pinzón', 'Edad' : '30',
'País' : 'Colombia', 'Residencia' : 'Bogotá',
'Institución': 'Universidad Antonio Nariño',
'Hobbie' : 'Atletismo'},
'grisalesj' : {'Nombre' : 'Jennifer', 'Apellido' : 'Grisales',
'Edad' : '27', 'País' : 'Colombia',
'Residencia' : 'Bucaramanga',
'Institución' : 'Universidad Industrial de Santander',
'Hobbie': 'Rugby-Yoga'},
'martinezj' : {'Nombre' : 'Jocabed', 'Apellido' : 'Martínez', 'Edad' : '22',
'País' : 'Venezuela', 'Residencia' : 'Caracas',
'Institución': 'Universidad Central de Venezuela',
'Hobbie' : 'Música'},
'fernandezn' : {'Nombre' : 'Nicolás', 'Apellido' : 'Fernandez',
'Edad' : '27', 'País' : 'Argentina', 'Residencia' : 'Perú',
'Institución': 'Universidad Nacional Mayor de San Marcos',
'Hobbie': 'Tocar el piano'},
'navasa' : {'Nombre' : 'Alfonso', 'Apellido' : 'Navas', 'Edad' : '24',
'País' : 'Colombia', 'Residencia' : 'Bogotá',
'Institución' : 'Universidad Nacional de Colombia',
'Hobbie' : 'Crossfit'},
'bermudezj' : {'Nombre' : 'Jesús', 'Apellido' : 'Bermúdez',
'Edad' : '25', 'País' : 'Colombia', 'Residencia' : 'Bogotá',
'Institución': 'Universidad Nacional de Colombia',
'Hobbie' : 'Senderismo - Montar bicicleta'},
'semprumg' : {'Nombre' : 'Gerardo', 'Apellido' : 'Semprum', 'Edad' : '24',
'País' : 'Venezuela', 'Residencia' : 'Caracas',
'Institución' : 'Universidad Central de Venezuela',
'Hobbie' : 'Artes marciales'},
'vargass' : {'Nombre' : 'Sasiri', 'Apellido': 'Vargas', 'Edad': '20',
'País': 'Colombia', 'Residencia' : 'Cali',
'Institución': 'Universidad del Valle',
'Hobbie' : 'Canta-Bailar'},
'arturos' : {'Nombre' : 'Arturo', 'Apellido': 'Sánchez', 'Edad': '34',
'País': 'Venezuela', 'Residencia' : 'Ginebra',
'Institución': "Laboratoire d'Annecy De Physique Des Particules",
'Hobbie' : 'Montar bicicleta'},
'ocariz' : {'Nombre' : 'José', 'Apellido': 'Ocariz', 'Edad': '52',
'País': 'Venezuela', 'Residencia' : 'París',
'Institución': 'Université de Paris',
'Hobbie' : 'Música-Gastronomía-Literatura'},
}
```
%% Cell type:markdown id: tags:
*Parte c: Creando las funciones*
A continuación, crearé el código correspondiente a tres funciones:
1. La función *hallar_compas*, que recibirá como entrada el diccionario _compas_ y un país, para retornar las informaciones completas de todos los amigos congueros en ese país tal como lo indica la sección (c.1)
2. La función *promedio_edad*, que calculará y mostrará el promedio de edad de todas las personas del diccionario _compas_ (c.2)
3. La función *mostrar_inst*, que mostrará todas las instituciones de los amigos congueros, sin repetir (c.3)
(c.1) La función *hallar_compas*:
Para saber el país de alguna persona de compas, puedo escribir *compas[user]['País']* y dado un país como entrada se puede determinar si el 'País' almacenado en cada usuario es igual a este pais *if compas[user]['País'] == pais*. Esto debe evaluarse para cada usuario en compas y para aquellos donde se cumpla esta condición, se almacenan sus datos en un nuevo diccionario *compas_pais*, donde las claves son los nombres de usuario y los valores la lista de data que corresponde a cada usuario. Además, utilizando pandas, se genera un dataframe que proviene del diccionario *compas_pais*, para mostrar la información tabulada que retorna la función.
%% Cell type:code id: tags:
``` python
def hallar_compas(compas, pais):
compas_pais = {}
for user in compas:
if compas[user]['País'] == pais:
user_data = []
for data in compas[user]:
user_data.append(compas[user][data])
compas_pais[user] = user_data
header = ['Nombre', 'Apellido', 'Edad', 'País', 'Residencia', 'Institución', 'Hobbie']
df_pais = pd.DataFrame.from_dict(compas_pais, orient='index', columns=header)
print(df_pais)
return
# Al usar pandas para la tarea dos, decidí crear hallar_compas.
# Pero en un principio, había creado esta función hallar_compas2.
#
# def hallar_compas2(compas, pais):
# veces = 0
# for user in compas:
# if compas[user]['País'] == pais:
# user_data = []
# for data in compas[user]:
# user_data.append(compas[user][data])
# if veces == 0:
# print('{:<10} {:<10} {:<3} {:<10} {:<12} {:<40} {:<15}'.
# 'format('Nombre', 'Apellido', 'Edad', 'País',
# 'Residencia', 'Institución', 'Hobbie'))
# veces = veces + 1
# print('{:<10} {:<10} {:<3} {:<10} {:<12} {:<40} {:<15}'.
# 'format(user_data[0], user_data[1], user_data[2],
# 'user_data[3], user_data[4], user_data[5], user_data[6]))
# return
```
%% Cell type:markdown id: tags:
(c.2) La función *promedio_edad*:
Voy a definir dos cantidades: la edad de un usuario dado por *user_edad* que almacena el entero del dato en compas[user]['Edad'] y *suma_edades*, en la cual se va sumando la edad para cada usuario. En *promedio*, esta suma se divide por el número de personas en compas (*len(compas)*), tomando que la edad promedio sea un entero y la función retorna la impresión.
%% Cell type:code id: tags:
``` python
def promedio_edad(compas):
suma_edades = 0
for user in compas:
user_edad = int(compas[user]['Edad'])
suma_edades = suma_edades + user_edad
promedio = suma_edades // len(compas)
print(f'Promedio de edad: {promedio}')
return
```
%% Cell type:markdown id: tags:
(c.3) La función *mostrar_inst*:
Esta vez, crearé una lista vacía llamada instituciones. Usando un for, almacenaré en instituciones los elementos
inst, que corresponden a los valores de *compas[user]['Institución']*, pero solo si la institución no estaba incluida anteriormente en la lista, para eso el if. Con *sorted()* se ordena la lista alfabéticamente y con *'\n'.join* se hace una cadena con una institución por línea. La función retorna la impresión de esta cadena.
%% Cell type:code id: tags:
``` python
def mostrar_inst(compas):
instituciones = []
for user in compas:
inst = compas[user]['Institución']
if inst not in instituciones:
instituciones.append(inst)
inst_str = '\n'.join(sorted(instituciones))
print(inst_str)
return
```
%% Cell type:markdown id: tags:
*El programa principal: el sistema de Amigos congueros.*
A continuación se muestra un programa que permite explorar las funciones mencionadas anteriormente y además, que puede desplegar el diccionario correspondiente a *compas[user]* a través de las opciones ofrecidas por el menú.
%% Cell type:code id: tags:
``` python
# Primero, necesitamos importar pandas para crear el dataframe
# de la función hallar_compas y otra herramienta secreta que
# nos servirá para más tarde:
import pandas as pd
import time
# Se publica un mensaje de bienvenida:
print('¡Hola! Bienvenido al sistema de Amigos congueros, donde podrás '
f'encontrar la data de {len(compas)} integrantes de LA-CoNGA physics.'
'\nPor favor, lee las siguientes opciones y escoge la que deseas:')
# El mensaje con las opciones del menú se almacena como opciones
opciones = ('\n(a) Para consultar el diccionaro de un amigo conguero a través '
'de su usuario en Mattermost \n'
'(b) Para consultar los amigos congueros del país que desees \n'
'(c) Para mostrar el promedio de edad de los amigos congueros '
'registrados en el sistema \n'
'(d) Para mostrar las instituciones de los amigos congueros registrados'
'\n(e) Salir \n')
print(opciones)
# _opcion_ es el input que acepta una de las opciones dadas o envía
# mensaje de error. Gracias al while el programa seguirá funcionando
# mientras la opción escogida no sea e.
opcion = input()
while opcion != 'e':
if opcion == 'a':
user = str(input('Por favor, escribe el nombre de usuario: '))
print(compas[user])
elif opcion == 'b':
pais = str(input('Por favor, escribe un país: '))
print(f'Buscando amigos en {pais}...')
# Uso la función time para poner un tiempo de espera.
time.sleep(3)
hallar_compas(compas, pais)
elif opcion == 'c':
print('Calculando promedio de edad de los amigos congueros...')
time.sleep(3)
print('¡Promedio calculado! \n')
promedio_edad(compas)
elif opcion == 'd':
print('Buscando instituciones... preparando lista...')
time.sleep(3)
print('¡Lista completada! \n \nInstituciones donde estudian o trabajan'
'los amigos congueros')
mostrar_inst(compas)
else:
print('Ups, parece que aún no contamos con esa opción.')
print('\n')
# Para poder explorar más opciones
respuesta = str(input('¿Deseas explorar otra opción del sistema de Amigos '
'Congueros? s/n: '))
if respuesta == 's':
print('\nPor favor, lee las siguientes opciones y escoge la que deseas:')
print(opciones)
opcion = input()
else:
opcion = 'e'
# Al salir del programa, una despedida
if opcion == 'e':
print('Vale, hasta luego.')
```
%% Output
¡Hola! Bienvenido al sistema de Amigos congueros, donde podrás encontrar la data de 12 integrantes de LA-CoNGA physics.
Por favor, lee las siguientes opciones y escoge la que deseas:
(a) Para consultar el diccionaro de un amigo conguero a través de su usuario en Mattermost
(b) Para consultar los amigos congueros del país que desees
(c) Para mostrar el promedio de edad de los amigos congueros registrados en el sistema
(d) Para mostrar las instituciones de los amigos congueros registrados
(e) Salir
a
Por favor, escribe el nombre de usuario: martinezj
{'Nombre': 'Jocabed', 'Apellido': 'Martínez', 'Edad': '22', 'País': 'Venezuela', 'Residencia': 'Caracas', 'Institución': 'Universidad Central de Venezuela', 'Hobbie': 'Música'}
¿Deseas explorar otra opción del sistema de Amigos Congueros? s/n: s
Por favor, lee las siguientes opciones y escoge la que deseas:
(a) Para consultar el diccionaro de un amigo conguero a través de su usuario en Mattermost
(b) Para consultar los amigos congueros del país que desees
(c) Para mostrar el promedio de edad de los amigos congueros registrados en el sistema
(d) Para mostrar las instituciones de los amigos congueros registrados
(e) Salir
b
Por favor, escribe un país: Colombia
Buscando amigos en Colombia...
Nombre Apellido Edad País Residencia \
ramosd David Ramos 24 Colombia Bucaramanga
pinzonc Carlos Pinzón 30 Colombia Bogotá
grisalesj Jennifer Grisales 27 Colombia Bucaramanga
navasa Alfonso Navas 24 Colombia Bogotá
bermudezj Jesús Bermúdez 25 Colombia Bogotá
vargass Sasiri Vargas 20 Colombia Cali
Institución Hobbie
ramosd Universidad Industrial de Santander Tocar guitarra
pinzonc Universidad Antonio Nariño Atletismo
grisalesj Universidad Industrial de Santander Rugby-Yoga
navasa Universidad Nacional de Colombia Crossfit
bermudezj Universidad Nacional de Colombia Senderismo - Montar bicicleta
vargass Universidad del Valle Canta-Bailar
¿Deseas explorar otra opción del sistema de Amigos Congueros? s/n: s
Por favor, lee las siguientes opciones y escoge la que deseas:
(a) Para consultar el diccionaro de un amigo conguero a través de su usuario en Mattermost
(b) Para consultar los amigos congueros del país que desees
(c) Para mostrar el promedio de edad de los amigos congueros registrados en el sistema
(d) Para mostrar las instituciones de los amigos congueros registrados
(e) Salir
c
Calculando promedio de edad de los amigos congueros...
¡Promedio calculado!
Promedio de edad: 27
¿Deseas explorar otra opción del sistema de Amigos Congueros? s/n: s
Por favor, lee las siguientes opciones y escoge la que deseas:
(a) Para consultar el diccionaro de un amigo conguero a través de su usuario en Mattermost
(b) Para consultar los amigos congueros del país que desees
(c) Para mostrar el promedio de edad de los amigos congueros registrados en el sistema
(d) Para mostrar las instituciones de los amigos congueros registrados
(e) Salir
d
Buscando instituciones... preparando lista...
¡Lista completada!
Instituciones donde estudian o trabajanlos amigos congueros
Laboratoire d'Annecy De Physique Des Particules
Universidad Antonio Nariño
Universidad Central de Venezuela
Universidad Industrial de Santander
Universidad Nacional Mayor de San Marcos
Universidad Nacional de Colombia
Universidad del Valle
Université de Paris
¿Deseas explorar otra opción del sistema de Amigos Congueros? s/n: s
Por favor, lee las siguientes opciones y escoge la que deseas:
(a) Para consultar el diccionaro de un amigo conguero a través de su usuario en Mattermost
(b) Para consultar los amigos congueros del país que desees
(c) Para mostrar el promedio de edad de los amigos congueros registrados en el sistema
(d) Para mostrar las instituciones de los amigos congueros registrados
(e) Salir
e
Vale, hasta luego.
%% Cell type:markdown id: tags:
Tras comprobar la funcionalidad del menú, se da por terminada la solución del ejercicio.
%% Cell type:code id: tags:
``` python
! jupyter nbconvert ejercicio3.ipynb --to html --output ejercicio3.html
```
%% Output
[NbConvertApp] Converting notebook ejercicio3.ipynb to html
[NbConvertApp] Writing 610002 bytes to ejercicio3.html
%% Cell type:code id: tags:
``` python
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment