Funciones y librerías#
Programando sin barreras III#
No te pierdas el vídeo de Funciones y librerías.
Funciones#
Una función en programación nos permite definir un bloque de código que deseamos usar varias veces en nuestro programa, es decir nos ayuda a reducir la redundancia en nuestro programa, eeduciendo el número de líneas de código.
Sintaxis
En Python para poder crear nuestras propias funciones es necesario seguir una estructura especifica, la cual separo en los siguientes tips:
Primero la palabra reservada
def
Seguido del nombre de la función
Paréntesis”()”, si tu función recibirá alguna variable irá dentro de estos paréntesis si no va vacío.
Agregamos dos puntos “:”
Después de esto ponemos las líneas de código que queremos que ejecute nuestra función.
Usamos la palabra reservada
return
si queremos que nuestra función devuelva algún valor.
Ejemplo
El nombre de la función es suma y recibe dos parámetros y devuelve una variable c
def suma(a,b):
c=a+b
return c
Solo quedaría llamar la función!, veamoslo en el siguiente código.
# Se crea una función que calcule la suma de dos números
def suma(a,b):
c=a+b
return c
#Se llama la función indicando los parámetros
suma(10,4)
14
# Si llamamos la función con nuevos parámetros, tendremos un nuevo resultado:
suma(30,56)
86
# Se crea la misma función pero en vez de retornar un valor le pedimos que lo
# imprima
def suma(a,b):
c=a+b
print("La suma es: ",c)
#Se llama la función indicando los parámetros
suma(10,4)
La suma es: 14
Un momento!,print()
¿No se te hace muy familiar?, CLARO!.
print()
También es una función, en python existen un grán número de funciones. En este notebook veremos unas cuantas…
print()
Muestra texto en pantallalen()
Nos muestra la longitud del parámetro que ingresemosmax()
En un arreglo de números indica cual es el mayormin()
En un arreglo de números indica cual es el menor
Te reto a buscar más funciones y aplicarlas en tu código.
# Len() muestra el tamaño del parámetro que ingresemos. En este caso mostró el
# tamaño de la cadena de texto
len("La mujer cantaba mientras programaba")
36
# Max() devuelve el valor mayor entre varios
max([3,4,8,10])
10
#Intentalo con el min() en esta celda
Podemos crear diferentes funciones. Por ejemplo, creemos una función que multiplique dos números:
def Mult(a, b):
c = a * b
return(c)
# Podemos multiplicar dos enteros
Mult(2, 3)
6
# Podemos multiplicar dos numeros float
Mult(1.6, 3.6)
5.760000000000001
# Podemos multiplicar dos variables de diferente tipo
Mult(2, "Hola")
'HolaHola'
# Definición de función:
def square(a):
# b y c son variables locales
b = 1
c = a * a + b
print( "(a+1)*(a+1)=", c)
return(c)
# x y y son variables globales
x = 3
y = square(x)
y
(a+1)*(a+1)= 10
10
#Mira otro ejemplo:
def my_function1(var):
print("Yo recibí", var)
var += 1
print("Ahora tengo", var)
var = 1
my_function1(var)
print(var)
Yo recibí 1
Ahora tengo 2
1
#Puedes definir variables globales dentro de funciones de la siguiente manera
def my_function():
global var
var = 2
print("¿Conozco a aquella variable?", var)
var = 1
my_function()
print(var)
¿Conozco a aquella variable? 2
2
1. Define una función que reciba como argumento un número y retone el factorial de dicho número
El factorial (!) de un número entero positivo es el producto de todos los números de 1 hasta el número: por ejemplo 3! == 3 × 2 × 1.
2. Cree una función que encuentre el elemento más pequeño de una lista dada.
3. Escribe una función que de la tabla de multiplicar de un número dado
4. Realiza un programa donde el usuario ingrese un número y el programa le diga si es primo dicho número o no.
Teorema de Wilson: puede afirmarse que un número n> 1 es primo si y solo si (n− 1)! ≡ − 1 (mod n)
Nota: 26≡11 (mod 5) significa que
26 mod 5=1
11 mod 5=1
La magia de las Librerías#
Las librerías en python son una herramienta fundamental a la hora de programar ya que nos permiten ampliar nuestras funcionalidades apartir de módulos ya creados.
La forma de llamar una librería comienza con la palabra reservada import
esta palabra seguida del nombre de la librería que queremos usar traerá todas las funcionalidades la librería. En python existen un sin número de librerías en este repaso nos centraremos en tres math,numpy y matplotlib
Para poder usar la librería en las siguientes celdas de nuestro notebook debemos hacer uso del nombre seguido del punto y la función que se va usar.
# Aqui importamos una librería
import math
# Se hace uso de la librería math y la función pow() que nos permite elevar el
# primer número a la cantidad del segundo número
math.pow(2,4)
16.0
Para hacernos una idea de lo últil que son las librerías en el siguiente link podrán visitar todas las librerías de math. No es necesario usarlas todas, solamente ir haciendo uso de las que nuestro programa necesite.
Mira este juego de “piedra, papel o tijera” usando la librería random:
Comenta cada línea con su función en el código:
import random
print("¡Juguemos Piedra, Papel o Tijera!")
print("1. Piedra \n2. Papel \n3. Tijera")
opciones = ["Piedra", "Papel", "Tijera"]
opcion_jugador = int(input("Escribe el número de tu opción: "))
opcion_computadora = random.randint(1, 3)
print("\n")
print("Tú elegiste", opciones[opcion_jugador-1])
print("Python eligió", opciones[opcion_computadora-1])
print("\n")
if opcion_jugador == opcion_computadora:
print("¡Empate!")
elif opcion_jugador == 1 and opcion_computadora == 3 or opcion_jugador == 2 and opcion_computadora == 1 or opcion_jugador == 3 and opcion_computadora == 2:
print("¡Ganaste!")
else:
print("Python te ganó :(")
¡Juguemos Piedra, Papel o Tijera!
1. Piedra
2. Papel
3. Tijera
---------------------------------------------------------------------------
StdinNotImplementedError Traceback (most recent call last)
Cell In[16], line 7
4 print("1. Piedra \n2. Papel \n3. Tijera")
6 opciones = ["Piedra", "Papel", "Tijera"]
----> 7 opcion_jugador = int(input("Escribe el número de tu opción: "))
8 opcion_computadora = random.randint(1, 3)
10 print("\n")
File /usr/local/lib/python3.9/site-packages/ipykernel/kernelbase.py:1260, in Kernel.raw_input(self, prompt)
1258 if not self._allow_stdin:
1259 msg = "raw_input was called, but this frontend does not support input requests."
-> 1260 raise StdinNotImplementedError(msg)
1261 return self._input_request(
1262 str(prompt),
1263 self._parent_ident["shell"],
1264 self.get_parent("shell"),
1265 password=False,
1266 )
StdinNotImplementedError: raw_input was called, but this frontend does not support input requests.
Vamos ahora ver una librería fundamental para el cálculo de matrices y análisis de datos. La famosisima numpy
import numpy
# Crearemos un vector o array de una dimensión
a1 = numpy.array([1,2,3,4])
print(type(a1))
print(a1)
<class 'numpy.ndarray'>
[1 2 3 4]
A la hora de llamar una librería tener que repetir su nombre cada vez que la vamos a usar. Esto se vuelve tediozo y más con algunas que su nombre son super largos! Pero, podemos haver uso de la palabra reservada as
la cual nos permitirá poner un alias a nuestra librería y poder hacer uso de esta por medio de ese alías.
# Llamamos la librería numpy pero le asignamos el alías np
import numpy as np
# Crearemos un vector o array de una dimensión
b1 = np.array([5,6,7,8])
print(type(b1))
print(b1)
<class 'numpy.ndarray'>
[5 6 7 8]
El alías lo podemos poner a nuestro gusto, pero en programación existe un estandár a la hora de poner estos alías y hacen que nuestro código sea más fácil de leer por otra persona.
# Llamamos la librería numpy pero le asignamos el alís pppdnombreinventado
import numpy as pppdnombreinventado
# Crearemos un vector o array de una dimensión
c1 = pppdnombreinventado.array([8,9,10,11])
print(type(c1))
print(c1)
<class 'numpy.ndarray'>
[ 8 9 10 11]
Conociendo un poco más de numpy
#
Existen varios atributos y funciones que describen las características de un array.
a.ndim : Devuelve el número de dimensiones del array a.
a.shape : Devuelve una tupla con las dimensiones del array a.
a.size : Devuelve el número de elementos del array a.
a.dtype: Devuelve el tipo de datos de los elementos del array a.
import numpy as np
a = np.array([1, 2, 3]) # crea una array de un rango
print("El tipo de la variable a es:", type(a))
print(("y su tamaño es:", a.shape)
<class 'numpy.ndarray'>
(3,)
1 2 3
[5 2 3]
(2, 3)
1 2 4
#Puedes imprimir cada uno de los elementos de a
print(a[0], a[1], a[2])
#o cambiarlos
a[0] = 5 # cambia un elemento de la array
print(a)
#Podemos aumentar el rango de la array
b = np.array([[1,2,3],[4,5,6]]) # crea una array de segundo rango
print(b.shape)
print(b[0, 0], b[0, 1], b[1, 0]) #imprimir cada uno de sus elementos
(2, 3)
1 2 4
numpy
también tiene muchas funciones para crear arrays
a = np.zeros((2,2)) # crea una array de ceros
print("Array de ceros:\n",a, "\n")
b = np.ones((1,2)) # crea una array de unos
print("Array de unos:\n",b)
c = np.full((2,2), 7) # crea una array con numeros constantes
print("Array de con constantes:\n",c, "\n")
e = np.random.random((2,2)) # crea una array con valores aleatorios
print("Array aleatoria:\n",e, "\n")
Array de ceros:
[[0. 0.]
[0. 0.]]
Array de unos:
[[1. 1.]]
Array de con constantes:
[[7 7]
[7 7]]
Array aleatoria:
[[0.64373792 0.25629592]
[0.73398727 0.23813141]]
1. ¿Cual es el resultado de las siguientes expresiones?
0 * np.nan
np.nan == np.nan
np.inf > np.nan
np.nan - np.nan
np.nan in set([np.nan])
0.3 == 3 * 0.1
2. Reemplace todos los números impares por -1 en esta array:
a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])