Commit 41f96fdb authored by Angie Nicole Hernández Durán's avatar Angie Nicole Hernández Durán
Browse files

Ejercicios terminados y archivos en formato html añadidos

parent 405d62cc
.ipynb_checkpoints/
File added
This diff is collapsed.
%% Cell type:markdown id: tags:
**Estudiante: Angie Nicole Hernández Durán - UIS**
# 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.
%% Cell type:code id: tags:
``` python
#Voy a hacer una función que reciba dicha lista de palabras y haga lo requerido
def organizador(string_of_words): #El argumento de mi función debe ser tipo str
x = string_of_words.split('-')#Separo el string que tengo para poder comparar y ordenar las palabras
x = list(dict.fromkeys(x)) #Hago de la lista un diccionario, y toma las keys, esto hace que se ignoren
#las keys repetidas. luego se hace del diccionario de nuevo una lista
x_sorted = sorted(x) #Ordeno alfabéticamente
y = '-'.join(x_sorted) #Concateno la lista, poniendo guiones entre las palabras
print(y) #Imprimo dicha lista
return y #Dicha lista es además lo que devuelve mi función
```
%% Cell type:markdown id: tags:
Ahora una prueba
%% Cell type:code id: tags:
``` python
lista = input("Ingrese una lista de palabras separadas SOLAMENTE por guiones: ")
```
%% Output
Ingrese una lista de palabras separadas SOLAMENTE por guiones:mesa-pared-piso-techo-edificio-pared-escritorio-botella-vaso-botella-libreta-lápiz-closet
%% Cell type:markdown id: tags:
Ingresamos lo anterior a la función
%% Cell type:code id: tags:
``` python
n = organizador(lista)
```
%% Output
botella-closet-edificio-escritorio-libreta-lápiz-mesa-pared-piso-techo-vaso
%% Cell type:markdown id: tags:
Parece que funciona bien
This diff is collapsed.
%% Cell type:markdown id: tags:
**Estudiante: Angie Nicole Hernández Durán - UIS**
# Triángulo de Pascal
## Parte 1
Escriba una rutina en python que reciba como entrada un número entero, n, e imprima losnúmeros en la n-ésimafila del triángulo de Pascal. El programa debe verificar si el número es entero, o arrojar un mensaje informando que ha habido un error del usuario en caso contrario.
%% Cell type:markdown id: tags:
Primero voy a hacer una función para hacer un triángulo de pascal hasta la n-ésima linea
%% Cell type:code id: tags:
``` python
import numpy as np
def triangulo_de_pascal(n):
pascal_matrix = np.zeros((n,n)) #Voy a comenzar con un arreglo de ceros donde poner mi triángulo
for i in range(n):
pascal_matrix[i,0] = 1 #todos los números sobre lado izquierdo del triángulo son 1
for j in range(n):
if i == j:
pascal_matrix[i,j] = 1 #todos los números sobre lado derecho del triángulo son 1 también
elif i != j:
pascal_matrix[i,j] = pascal_matrix[i-1,j-1] + pascal_matrix[i-1,j] #esta es la condición para
#todas las demás posiciones
return pascal_matrix #la función me devuelve el arreglo con el tríangulo de pascal
#hasta la fila n
```
%% Cell type:markdown id: tags:
Ahora continúo con una función que tome este triángulo de pascal y me imprima la fila deseada
%% Cell type:code id: tags:
``` python
def print_pascal(numero_entero):
check = isinstance(numero_entero, int) #Aquí reviso si el número introducido es entero
if check == True: #Si sí lo es, continúa al triángulo de pascal
triangle = triangulo_de_pascal(numero_entero) #Usando mi función anterior, obtengo la matriz
#que necesito
print(triangle[numero_entero-1,:]) #Finalmente, imprimo la última fila
else:
print("Error, no se introdujo un número entero.") #Si el 'check' nota que no se introdujo un número entero
#devuelve un mensaje de error
```
%% Cell type:markdown id: tags:
Ahora una pequeña prueba
%% Cell type:code id: tags:
``` python
print_pascal(9)
```
%% Output
[ 1. 8. 28. 56. 70. 56. 28. 8. 1.]
%% Cell type:code id: tags:
``` python
print_pascal(12.3)
```
%% Output
Error, no se introdujo un número entero.
%% Cell type:markdown id: tags:
## Parte 2
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.
Para esto, modifico la anterior rutina para que revise que todas las entradas de la función sean enteros, obtengo el triángulo de pascal con tantas filas como necesite, es decir, hasta la mayor fila introducida. finalmente tomo solamente las líneas que indican los argumentos que se introducen en la función.
%% Cell type:code id: tags:
``` python
def print_pascal_var(*args):
lista = list(args)
check = [isinstance(x, int) for x in lista] #Reviso si todos los números introducidos son enteros
if False in check: #Si alguno no lo es (hay algún 'False' en check)
# imprimo un mensaje de error
print("Error, uno o más de los números introducidos no son enteros.")
else: #Si todo es 'True', osea si todos son números enteros,
max_num = int(max(lista)) #hallo el número mayor
triangle = triangulo_de_pascal(max_num) #saco la matriz que necesito con el número mayor
n = [list(triangle[i-1,:]) for i in lista] #hago la lista con las filas requeridas, queda una
#lista de listas
n = [[element for element in sub if element != 0.0] for sub in n]
#como comencé con una matriz de ceros,
#quito estos valores (0.0) de las filas que no son
#la más larga
return n #La función devuelve la lista de listas, 'nested list'.
```
%% Cell type:markdown id: tags:
Ahora unas pruebas
%% Cell type:code id: tags:
``` python
print_pascal_var(1,5,4.2,7,9,2,4)
```
%% Output
Error, uno o más de los números introducidos no son enteros
%% Cell type:code id: tags:
``` python
print_pascal_var(4,2,7)
```
%% Output
[[1.0, 3.0, 3.0, 1.0], [1.0, 1.0], [1.0, 6.0, 15.0, 20.0, 15.0, 6.0, 1.0]]
This diff is collapsed.