Skip to content
Snippets Groups Projects
Commit ec579b05 authored by Tatiana Acero Cuellar's avatar Tatiana Acero Cuellar
Browse files

delete

parent 95a6c141
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
# Tatiana Acero Cuellar
## Universidad Nacional de Colombia
### Ejercicios semana 2
%% Cell type:markdown id: tags:
# Ejercicio No. 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
<br>Salida esperada: avión-melodía-naranja-tupla
%% Cell type:code id: tags:
``` python
import unidecode
```
%% Cell type:code id: tags:
``` python
def lista_de_palabras(words_list):
'''
Definir una función que reciba una lista de palabras separada por guiones y retorne las palabras
únicas ordenadas alfabéticamente.
'''
# -- revisa el tipo de variable
# -- si es string separa de acuerdo al guion si es una entrada tipo lista, toma el elemento y separa el string
if type(words_list) == str:
words = words_list.split('-')
elif type(words_list) == list:
words = words_list[0].split('-')
# -- convierte a variable tipo conjunto para tener valores repetidos.
# -- acá estariamos haciendo caso omiso de palabras como avión y avion,
# -- estas se tomarian como palabras diferentes
unique_words = set(words)
# -- crear una lista auxiliar sin acento y en minuscula
unique_words_aux = [unidecode.unidecode(i.lower()) for i in unique_words]
# -- ordenada la lista sin acentos y en minuscula y la lista original se ordena siguiendo la otra
sorted_words_aux = sorted(zip(unique_words_aux,unique_words), key=lambda x: x[0])
# -- ordena la variable anterior, de tal manera que quede cada lista separada
sorted_words = list(zip(*sorted_words_aux))[1]
# -- une las palabras para que quede un string separado por guiones
new_words_list = '-'.join(sorted_words)
return new_words_list
```
%% Cell type:code id: tags:
``` python
print(lista_de_palabras('naranja-avión-melodía-tupla-avión-tupla'))
print(lista_de_palabras(['naranja-avión-melodía-tupla-avión-tupla']))
print(lista_de_palabras(['Z-X-A-O-r-t']))
print(lista_de_palabras(['AMOR-ZApato-hELicoptero-regular-ZIPOTLE']))
print(lista_de_palabras(['avión-aviones-papá-papa-país']))
```
%% Output
avión-melodía-naranja-tupla
avión-melodía-naranja-tupla
A-O-r-t-X-Z
AMOR-hELicoptero-regular-ZApato-ZIPOTLE
avión-aviones-país-papa-papá
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
# Tatiana Acero Cuellar
## Universidad Nacional de Colombia
### Ejercicios semana 2
%% Cell type:markdown id: tags:
# Ejercicio No. 2 - Triángulo de Pascal
* 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.
* 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:code id: tags:
``` python
# -- importar librerias necesarias para calcular los valores de triángulo de pascal
import numpy as np
import math
```
%% Cell type:markdown id: tags:
## Función 1
Función que recibe un número n, comprueba si es entero y mayor a 0, retorna la n-ésima fila del triángulo de pascal
%% Cell type:code id: tags:
``` python
def triangulo_pascal(numero):
'''
Función que recibe un número n, comprueba si es entero y mayor a 0,
retorna la n-ésima fila del triángulo de pascal
'''
# -- comprueba si el numero es negativo
if numero <= 0:
return 'Numero negativo, ingrese número nuevamente'
# -- intenta determinar la fila de valores, sino lanza una excepción con mensaje
try:
# -- guarda cada fila del triángulo en una lista
values = []
for i in range(numero):
row = []
for j in range(i+1):
# -- los valores se pueden construir como una combinatoria de números
rel = np.math.factorial(i) / (np.math.factorial(j)*(np.math.factorial(i-j)))
# -- guarda el entero del valor de la combinatoria
row.append(int(rel))
# -- guarda los valores de la fila
values.append(row)
# -- imprime unicamente la último fila
return values[-1]
except:
return 'El numero ingresado no es correcto: error'
```
%% Cell type:code id: tags:
``` python
print('línea 10: {}'.format(triangulo_pascal(10)))
print('línea 10.1: {}'.format(triangulo_pascal(10.1)))
print('línea -1: {}'.format(triangulo_pascal(-1)))
print('línea 1: {}'.format(triangulo_pascal(1)))
print('línea 13: {}'.format(triangulo_pascal(13)))
```
%% Output
línea 10: [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
línea 10.1: El numero ingresado no es correcto: error
línea -1: Numero negativo, ingrese número nuevamente
línea 1: [1]
línea 13: [1, 12, 66, 220, 495, 792, 924, 792, 495, 220, 66, 12, 1]
%% Cell type:markdown id: tags:
## Función 2
Función que recibe n números y retorna los valores del triángulo de pascal correspondiente a cada línea dada por cada uno de esos n números.
%% Cell type:code id: tags:
``` python
# -- * para poder recibir n cantidad de entradas
def triangulo_pascal_lista(*numero):
'''
Función que recibe n números y retorna los valores del triángulo de pascal correspondiente a cada línea dada
por cada uno de esos n números.
'''
# -- para guardar la n fila de cada *numero
final_values = []
# -- iterar sobre cada argumento recibido
for num in numero:
try:
values = []
for i in range(num):
row = []
for j in range(i+1):
rel = np.math.factorial(i) / (np.math.factorial(j)*(np.math.factorial(i-j)))
row.append(int(rel))
values.append(row)
final_values.append(values[-1])
# -- si alguno de los argumentos arroja la excepción, llenar en la lista con el string 'error, revise número'
except:
final_values.append('error, revise número')
return final_values
```
%% Cell type:code id: tags:
``` python
# -- ejemplos con números positivos
print(triangulo_pascal_lista(3,4,10))
print('línea 3: {} \nlínea 4: {} \nlínea 10: {}'. format(triangulo_pascal_lista(3,4,10)[0],
triangulo_pascal_lista(3,4,10)[1],
triangulo_pascal_lista(3,4,10)[2]))
print()
# -- ejemplos con números positivos
print(triangulo_pascal_lista(1,2,3))
print('línea 1: {} \nlínea 2: {} \nlínea 3: {}'. format(triangulo_pascal_lista(1,2,3)[0],
triangulo_pascal_lista(1,2,3)[1],
triangulo_pascal_lista(1,2,3)[2]))
print()
# -- ejemplos con un número decimal
print(triangulo_pascal_lista(1.1,2,3))
print('línea 1.1: {} \nlínea 2: {} \nlínea 3: {}'. format(triangulo_pascal_lista(1.1,2,3)[0],
triangulo_pascal_lista(1.1,2,3)[1],
triangulo_pascal_lista(1.1,2,3)[2]))
print()
# -- ejemplos con un número decimal y uno negativo
print(triangulo_pascal_lista(1.1,-2,3))
print('línea 1.1: {} \nlínea -2: {} \nlínea 3: {}'. format(triangulo_pascal_lista(1.1,-2,3)[0],
triangulo_pascal_lista(1.1,-2,3)[1],
triangulo_pascal_lista(1.1,-2,3)[2]))
print()
# -- ejemplos con mas numeros
print(triangulo_pascal_lista(10,1,3,14))
print('línea 10: {} \nlínea 1: {} \nlínea 3: {} \nlínea 14: {}'. format(triangulo_pascal_lista(10,1,3,14)[0],
triangulo_pascal_lista(10,1,3,14)[1],
triangulo_pascal_lista(10,1,3,14)[2],
triangulo_pascal_lista(10,1,3,14)[3]))
```
%% Output
[[1, 2, 1], [1, 3, 3, 1], [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]]
línea 3: [1, 2, 1]
línea 4: [1, 3, 3, 1]
línea 10: [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
[[1], [1, 1], [1, 2, 1]]
línea 1: [1]
línea 2: [1, 1]
línea 3: [1, 2, 1]
['error, revise número', [1, 1], [1, 2, 1]]
línea 1.1: error, revise número
línea 2: [1, 1]
línea 3: [1, 2, 1]
['error, revise número', 'error, revise número', [1, 2, 1]]
línea 1.1: error, revise número
línea -2: error, revise número
línea 3: [1, 2, 1]
[[1, 9, 36, 84, 126, 126, 84, 36, 9, 1], [1], [1, 2, 1], [1, 13, 78, 286, 715, 1287, 1716, 1716, 1287, 715, 286, 78, 13, 1]]
línea 10: [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
línea 1: [1]
línea 3: [1, 2, 1]
línea 14: [1, 13, 78, 286, 715, 1287, 1716, 1716, 1287, 715, 286, 78, 13, 1]
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
# Tatiana Acero Cuellar
## Universidad Nacional de Colombia
### Ejercicios semana 2
%% Cell type:markdown id: tags:
# Ejercicio No. 3 - Amigos congueros
* 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.
* 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”.
* 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 detodas las personas en él, y una forma de mostrar todas las instituciones (sin repetición)
%% Cell type:markdown id: tags:
No hemos visto pandas, pero soy re fan de la librería
%% Cell type:code id: tags:
``` python
import numpy as np
import pandas as pd
```
%% Cell type:markdown id: tags:
Siglas de las universidades
%% Cell type:code id: tags:
``` python
universidades = {'UNAL': 'Universidad Nacional de Colombia',
'UCV': 'Universidad Central de Venezuela',
'UNMSM': 'Universidad Nacional Mayor de San Marcos',
'LAPP': 'Laboratoire d’Annecy de Physique des Particules',
'univ-tlse3': 'Université Paul Sabatier'}
```
%% Cell type:markdown id: tags:
## Crear diccionario 'compas' con la información recopilada
%% Cell type:code id: tags:
``` python
compas = {'acerot':
{'nombre': 'Tatiana',
'apellido': 'Acero Cuellar',
'residencia': 'Colombia',
'edad': '23',
'institución': 'UNAL',
'especialidad':'Mecánica Celeste Relativista',
'hobbie':'Anime'},
'andreatugores':
{'nombre': 'Andrea Carolina',
'apellido': 'Tugores Hernández',
'residencia': 'Venezuela',
'edad': '24',
'institución': 'UCV',
'especialidad':'Física médica',
'hobbie':'Tenis'},
'navasa':
{'nombre': 'Alfonso',
'apellido': 'Navas',
'residencia': 'Colombia',
'edad': '24',
'institución': 'UNAL',
'especialidad':'Física de sistemas complejos, Ecología',
'hobbie':'Crossfit'},
'fernandezn':
{'nombre': 'Nicolás',
'apellido': 'Fernández Cinquepalmi',
'residencia': 'Perú',
'edad': '27',
'institución': 'UNMSM',
'especialidad':'Física nuclear',
'hobbie':'Música'},
'arturos':
{'nombre': 'Arturo',
'apellido': 'Sanchez',
'residencia': 'Suiza',
'edad': '34',
'institución': 'LAPP',
'especialidad':'Física y Computación',
'hobbie':'Bicicleta'},
'pierre_r_pujol':
{'nombre': 'Pierre',
'apellido': 'Pujol',
'residencia': 'Francia',
'edad': '52',
'institución': 'univ-tlse3',
'especialidad':'Física teórica',
'hobbie':'Fotografía'},
'britod':
{'nombre': 'Daniel Arturo',
'apellido': ' Brito Urbina',
'residencia': 'Venezuela',
'edad': '26',
'institución': 'UCV',
'especialidad':'Teorías de Campos',
'hobbie':'Patinetas, Bicicletas, Videojuegos'},
'hernandezj':
{'nombre': 'Juan David',
'apellido': ' Hernández',
'residencia': 'Colombia',
'edad': '24',
'institución': 'UNAL',
'especialidad':'Electrodinámica cuántica',
'hobbie':'Leer, Videojuegos'},
'ordonezs':
{'nombre': 'Sebastian',
'apellido': ' Ordoñez',
'residencia': 'Colombia',
'edad': '22',
'institución': 'UNAL',
'especialidad':'Física de partículas experimentales',
'hobbie':'Leer, hiking'},
'malamboj':
{'nombre': 'Jorge Enrique',
'apellido': 'Malambo Martinez',
'residencia': 'Colombia',
'edad': '39',
'institución': 'UNAL',
'especialidad': 'Física',
'hobbie':'Talla en madera'},
'cristian.velandia':
{'nombre': 'Cristian',
'apellido': 'Velandia',
'residencia': 'Colombia',
'edad': '27',
'institución': 'UNAL',
'especialidad':'Optica',
'hobbie':'Anime, videojuegos'}}
```
%% Cell type:markdown id: tags:
## Crear la función
Función que recibe un diccionario y un país y retorna un Dataframe de las personas que residen en ese pais. Las columnas son las características/información de la persona.
%% Cell type:code id: tags:
``` python
def amigos_congueros(dicci, pais):
'''
Función que recibe un diccionario y un país y retorna un Dataframe de las personas que
residen en ese pais. Las columnas son las características/información de la persona.
'''
# -- inicializar una lista vacia para guardar los datos finales
ha = []
# -- iterar sobre el diccionario
for i in dicci:
# -- usar minúsculas, toca tener cuidado con acentos
if dicci[i]['residencia'].lower() == pais.lower():
# -- gudardar en la lista la informacion de la persona que esta en el pais
ha.append(dicci[i])
# -- si la lista no tiene elementos, no hay compas en ese pais
if len(ha) == 0:
print('No hay compañeros de ese país')
# -- convertir la lista en un dataframe, para que vea ordenado
return pd.DataFrame(ha)
```
%% Cell type:code id: tags:
``` python
# -- compas en venezuela
ej1 = amigos_congueros(compas, 'venezuela')
ej1
```
%% Output
nombre apellido residencia edad institución \
0 Andrea Carolina Tugores Hernández Venezuela 24 UCV
1 Daniel Arturo Brito Urbina Venezuela 26 UCV
especialidad hobbie
0 Física médica Tenis
1 Teorías de Campos Patinetas, Bicicletas, Videojuegos
%% Cell type:code id: tags:
``` python
# -- compas en colombia
ej2 = amigos_congueros(compas, 'colombia')
ej2
```
%% Output
nombre apellido residencia edad institución \
0 Tatiana Acero Cuellar Colombia 23 UNAL
1 Alfonso Navas Colombia 24 UNAL
2 Juan David Hernández Colombia 24 UNAL
3 Sebastian Ordoñez Colombia 22 UNAL
4 Jorge Enrique Malambo Martinez Colombia 39 UNAL
5 Cristian Velandia Colombia 27 UNAL
especialidad hobbie
0 Mecánica Celeste Relativista Anime
1 Física de sistemas complejos, Ecología Crossfit
2 Electrodinámica cuántica Leer, Videojuegos
3 Física de partículas experimentales Leer, hiking
4 Física Talla en madera
5 Optica Anime, videojuegos
%% Cell type:code id: tags:
``` python
# -- compas en peru
ej3 = amigos_congueros(compas, 'perú')
ej3
```
%% Output
nombre apellido residencia edad institución especialidad \
0 Nicolás Fernández Cinquepalmi Perú 27 UNMSM Física nuclear
hobbie
0 Música
%% Cell type:code id: tags:
``` python
# -- compas (el profe) en suiza
ej4 = amigos_congueros(compas, 'suiza')
ej4
```
%% Output
nombre apellido residencia edad institución especialidad \
0 Arturo Sanchez Suiza 34 LAPP Física y Computación
hobbie
0 Bicicleta
%% Cell type:code id: tags:
``` python
# -- compas (el profe) en francia
ej4 = amigos_congueros(compas, 'francia')
ej4
```
%% Output
nombre apellido residencia edad institución especialidad hobbie
0 Pierre Pujol Francia 52 univ-tlse3 Física teórica Fotografía
%% Cell type:markdown id: tags:
### A partir del diccionario compas se puede calcular el promedio y las instituciones de esta manera
Se podria hacer mas sencillo desde el dataframe
%% Cell type:code id: tags:
``` python
# -- inicializar la suma en cero
suma = 0
# -- inicializar una lista vacia
insti = []
# -- tomar cada diccionario y extraer el valor de la edad, sumar y promediar por la cantidad de compas
for i in compas:
suma = suma + int(compas[i]['edad'])
# -- guardar cada insitución en la lista
insti.append(compas[i]['institución'])
promedio = suma / len(compas)
print('El promedio de las edades de los compas es: {}'.format(promedio))
print('El promedio de las edades de los compas es: {}'.format(round(promedio)))
```
%% Output
El promedio de las edades de los compas es: 29.272727272727273
El promedio de las edades de los compas es: 29
%% Cell type:code id: tags:
``` python
# -- para determinar las instituciones sin repetir, convertirmos la lista en un conjunto
siglas = set(insti)
siglas
```
%% Output
{'LAPP', 'UCV', 'UNAL', 'UNMSM', 'univ-tlse3'}
%% Cell type:code id: tags:
``` python
# -- buscamos el nombre completo de acuerdo a la sigla
insituciones = [(i, universidades[i]) for i in siglas]
print('Las insituciones en las que estan vinculados los compas son: \n {}'.format(insituciones))
```
%% Output
Las insituciones en las que estan vinculados los compas son:
[('UCV', 'Universidad Central de Venezuela'), ('UNAL', 'Universidad Nacional de Colombia'), ('UNMSM', 'Universidad Nacional Mayor de San Marcos'), ('LAPP', 'Laboratoire d’Annecy de Physique des Particules'), ('univ-tlse3', 'Université Paul Sabatier')]
%% 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