Nombre: Sasiri Juliana Vargas Urbano
Correo: sasiri.vargas@correounivalle.edu.co
Usuario Mattermost: vargass
En la primera parte del ejercicio se pide recibir un número entero y retornar la fila correspondiente del triangulo de Pascal y si el número ingresado no es un entero, entonces notificar un error.
Para ello se importa una función de math: factorial
Y se hace uso de la funciión de python: isinstance.
A continuación se presenta la función que realiza lo deseado en la primera parde del ejercicio, su funcionamiento se entiende siguiendo los comentarios en el código.
from math import factorial #Se importa la función de math
def Pascal(z):
if isinstance(z,int): #Si el número ingresado es un entero, entonces sigue el proceso:
lista=[]
#Se hace un ciclo que retorna como una lista, los valores de las combinatorias
#de la fila del triangulo de Pascal correspondiente
for i in range(0,z+1,1):
comb=factorial(z)/(factorial(i)*(factorial(z-i)))
lista.append(int(comb))
print(lista) #Se imprime el resultado en pantalla
else: #Si el número ingresado no es un entero:
print(' -> El número ingresado no es un entero, por favor volver a ingresar')
Número entero
Pascal(0)
[1]
Pascal(3)
[1, 3, 3, 1]
Pascal(5)
[1, 5, 10, 10, 5, 1]
Número no entero
Pascal(1.2)
-> El número ingresado no es un entero, por favor volver a ingresar
Pascal(1+2j)
-> El número ingresado no es un entero, por favor volver a ingresar
Pascal(1E-2)
-> El número ingresado no es un entero, por favor volver a ingresar
En la segunda parte del ejericio se pide hacer una modificación de la función anterior, en este caso se ingresa una lista de números y se retorna una lista con los valores correspondientes a la fila del triangulo de Pascal, sí la lista de números inicial es entero.
Igualmente, el código se explica siguiendo los comentarios
def Pascalmod(x):
check=[] #A diferencia del anterior codigo, se crea una lista para evaluar si todos los números
#ingresados son enteros
for e in x: #Se agrega un for para evaluar todas las componentes de la lista ingresada
if isinstance(e,int):
check.append('Verdadero') #Se escribe en la lista 'check' la palabra 'Verdadero' si la componente de
#la lista ingresada es un entero
else:
check.append('Falso') #Se escribe en la lista 'check' la palabra 'Falso' si la componente de
#la lista ingresada no es un entero
ev=set(check) #Se reducen las palabras repetidas
#Longitud del 'set' = 1 representa que todos los números de la lista ingresada son enteros
if len(ev) != 1: #Si en la lista ingresa un número no entero
print(' -> Alguno de los números ingresados no es un entero, por favor volver a ingresar')
else: #Si en la lista todos los números son enteros
listaf=[] #Se agrega una nueva lista para imprimir esta
#Se agrega un for para escribir las componentes de la nueva lista, con el código presentado
#en la primera parte
for e in range(0,len(x),1):
y=int(x[e])
lista=[]
for i in range(0,y+1,1):
comb=factorial(y)/(factorial(i)*(factorial(y-i)))
lista.append(int(comb))
listaf.append(lista)
print(listaf)
Números enteros
Pascalmod([0,1,2,3,4])
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]
No números enteros
Pascalmod([0,1,2.,3,4])
-> Alguno de los números ingresados no es un entero, por favor volver a ingresar
Pascalmod([0,1,2,3+2j,4])
-> Alguno de los números ingresados no es un entero, por favor volver a ingresar
Pascalmod([0,1,2,3,4E-3])
-> Alguno de los números ingresados no es un entero, por favor volver a ingresar
!jupyter nbconvert --to html ejercicio2.ipynb
[NbConvertApp] Converting notebook ejercicio2.ipynb to html [NbConvertApp] Writing 591124 bytes to ejercicio2.html