Skip to content
Snippets Groups Projects
Commit d5b5bae7 authored by Felipe Reyes Osorio's avatar Felipe Reyes Osorio
Browse files

Added: .gitignore, notebook con tarea

parent 405d62cc
No related branches found
No related tags found
No related merge requests found
.ipynb_checkpoints
/
%% Cell type:markdown id: tags:
# Ejercicio 1
En la primera celda tomamos una lista de entrada del usuario. En la segunda usamos la función `.split` para crear una lista con cada palabra, la ordenamos con `sorted`, y finalmente la juntamos de nuevo con `.join` (siempre tenemos en cuenta que el separador es -).
%% Cell type:code id: tags:
``` python
inStr = str(input(r"Palabras de entrada (separadas por guiones): "))
```
%% Output
Palabras de entrada (separadas por guiones): último-intento-ya-después-de-haber-renombrado-la-variable
%% Cell type:code id: tags:
``` python
inStr = "-".join(sorted(inStr.split("-")))
```
%% Cell type:code id: tags:
``` python
print(inStr)
```
%% Output
de-después-haber-intento-la-renombrado-variable-ya-último
%% Cell type:markdown id: tags:
# Ejercicio 2
## Parte 1
Para la primera parte importamos la función `factorial` y definimos una función que retorna el coeficiente binomial $n\choose k$.
%% Cell type:code id: tags:
``` python
from math import factorial
```
%% Cell type:code id: tags:
``` python
binomCoef = lambda n, k: factorial(n)/(factorial(k)*factorial(n-k))
```
%% Cell type:markdown id: tags:
El usuario inserta $n$ deseado: si el valor de la entrada es igual sin importar si se transforma a un float o a un int, entonces podemos concluir que $n \in \mathbb{Z}$.
%% Cell type:code id: tags:
``` python
N = float(input(r"¿Número de la fila?"))
if N != int(N):
print("Error: n no es entero")
N = int(N)
```
%% Output
¿Número de la fila?8
%% Cell type:markdown id: tags:
Finamente, poblamos la lista `nRow` con los coeficientes de la fila correspondiente en el triángulo de Pascal e imprimimos.
%% Cell type:code id: tags:
``` python
nRow = []
for k in range(N+1):
nRow.append(binomCoef(N, k))
print(nRow)
```
%% Output
[1.0, 8.0, 28.0, 56.0, 70.0, 56.0, 28.0, 8.0, 1.0]
%% Cell type:markdown id: tags:
## Parte 2
Para la segunda parte reusamos una línea del primer punto, e insertamos los números de las filas separados por puntos; esto ayuda a que no se puedan insertar números no enteros. Luego convertimos cada elemento en un int.
%% Cell type:code id: tags:
``` python
manyN = input("Inserte los números de las filas separados por puntos: ")
manyN = [int(n) for n in manyN.split(".")]
```
%% Output
Inserte los números de las filas separados por puntos: 0.1.2.3.4.5
%% Cell type:markdown id: tags:
Reusamos el código de la parte anterior, salvo que esta vez está dentro de otro loop que itera sobre cada fila $n_i$. Las filas que se obtienen se adicionan a una lista `rows`.
%% Cell type:code id: tags:
``` python
rows = []
for N in manyN:
nRow=[]
for k in range(N+1):
nRow.append(binomCoef(N, k))
rows.append(nRow)
```
%% Cell type:markdown id: tags:
Finalmente imprimimos cada fila en orden de entrada. En este caso se muestran las filas de la 0 a la 5
%% Cell type:code id: tags:
``` python
for i in range(len(manyN)):
print(rows[i])
```
%% Output
[1.0]
[1.0, 1.0]
[1.0, 2.0, 1.0]
[1.0, 3.0, 3.0, 1.0]
[1.0, 4.0, 6.0, 4.0, 1.0]
[1.0, 5.0, 10.0, 10.0, 5.0, 1.0]
%% Cell type:markdown id: tags:
# Ejercicio 3
Con la función `newEntry` se puede poblar el diccionario.
* reyesf/Felipe/Reyes/Colombia/Cali/22/Univalle/Gimnasio
* varelaj/Jalil/Varela/Colombia/Palmira/21/Univalle/Age of mythology
* vargass/Sasiri/Vargas/Colombia/Cali/20/Univalle/Bailar
%% Cell type:code id: tags:
``` python
def newEntry(d):
info = input(r"Info de nueva entrada (sep. por /)")
info = info.split("/")
print(info)
#info = matter/nombre/apellido/pais/residencia/edad/institucion/hobbie
subd = {"nombre": info[1], "apellido":info[2], "país":info[3], "residencia":info[4], "edad":info[5], "institución":info[6], "hobbie":info[7]}
d[info[0]] = subd
```
%% Cell type:code id: tags:
``` python
compas = {}
```
%% Cell type:code id: tags:
``` python
newEntry(compas)
```
%% Output
Info de nueva entrada (sep. por /)vargass/Sasiri/Vargas/Colombia/Cali/20/Univalle/Bailar
['vargass', 'Sasiri', 'Vargas', 'Colombia', 'Cali', '20', 'Univalle', 'Bailar']
%% Cell type:markdown id: tags:
Definimos las tres funciones que se piden. Todas usan el mismo principio de iterar sobre las llaves de `compas`, e inspeccionar los contenidos de cada una. En la función que retorna las instituciones usamos un set para evitar entradas duplicadas.
%% Cell type:code id: tags:
``` python
def sortPais(d, pais):
names = []
for matter in d:
if d[matter]["país"] == pais:
names.append(matter)
## En caso de necesitar tabular de otra manera se deja así.
## De lo contrario se puede hacer un solo loop.
for matter in names:
print(d[matter])
def edadMedia(d):
prom = []
for matter in d:
prom.append(float(compas[matter]["edad"]))
print(sum(prom)/len(prom))
def instit(d):
instituciones = set()
for matter in d:
instituciones.add(compas[matter]["institución"])
print(instituciones)
```
%% Cell type:code id: tags:
``` python
sortPais(compas, "Colombia")
```
%% Output
{'nombre': 'Felipe', 'apellido': 'Reyes', 'país': 'Colombia', 'residencia': 'Cali', 'edad': '22', 'institución': 'Univalle', 'hobbie': 'Gimnasio'}
{'nombre': 'Jalil', 'apellido': 'Varela', 'país': 'Colombia', 'residencia': 'Palmira', 'edad': '21', 'institución': 'Univalle', 'hobbie': 'Age of mythology'}
{'nombre': 'Sasiri', 'apellido': 'Vargas', 'país': 'Colombia', 'residencia': 'Cali', 'edad': '20', 'institución': 'Univalle', 'hobbie': 'Bailar'}
%% Cell type:code id: tags:
``` python
edadMedia(compas)
```
%% Output
21.0
%% Cell type:code id: tags:
``` python
instit(compas)
```
%% Output
{'Univalle'}
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
%% 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