Introducción a funciones y módulos¶
Python tiene una serie de de funciones y módulos incluidos en su instalación estándar.
Las funciones incluidas pueden pensarse como instrucciones que realizan una determinada tarea y pueden ejecutarse solamente indicando el identificador asociado y la notación correspondiente (print(), type() float(), int(), etc.).
Los módulos son agrupaciones de funciones, que si se quieren utilizar, tienen que importarse del módulo en el cual se encuentran.
Funciones¶
Functiones incorporadas |
||||
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a = input("escriba algo")
---------------------------------------------------------------------------
StdinNotImplementedError Traceback (most recent call last)
<ipython-input-1-e7bddc30a437> in <module>
----> 1 a = input("escriba algo")
~/opt/anaconda3/lib/python3.8/site-packages/ipykernel/kernelbase.py in raw_input(self, prompt)
855 """
856 if not self._allow_stdin:
--> 857 raise StdinNotImplementedError(
858 "raw_input was called, but this frontend does not support input requests."
859 )
StdinNotImplementedError: raw_input was called, but this frontend does not support input requests.
print(a)
print(type(a))
algo
<class 'str'>
Las funciones pueden necesitar argumentos de entrada (datos dentro de los paréntesis) o no, pueden hacer una tarea y regresar una valor calculado por dicha tarea o no. Por el momento con esta información basta
Módulos¶
Existe una cantidad considerable de módulos incorporados en la instalación estándar (Anaconda tiene estos y otras más), para consultar la lista de módulos estándar instalados, se puede revisar el sigueinte enlace. Algunos módulos estándar son los siguientes
getpass. Lectura portátil de contraseñas y recuperación del ID de usuario.
urllib.request. Biblioteca para abrir URL.
json. Codifica y decodifica el formato JSON.
math. Funciones matemáticas
Para hacer uso de las funciones de los módulos, estos se puden importar de varias formas.
import MODULE1, MODULE2, ..., MODULEN
import MODULE as ANYTHING
from MODULE import FUNCTION_IN_MODULE1, FUNCTION_IN_MODULE2
from MODULE import *
Importamos del módulo math como ejemplo
import math
math.pi
3.141592653589793
import math as m
m.cos(m.pi)
-1.0
from math import sin, pi
sin(pi/2)
1.0
from math import *
atan(sin(pi/4)/cos(pi/4))
0.7853981633974483
pi/4
0.7853981633974483
Funciones y módulos no estándar¶
Se pueden definir funciones y utilizar módulos no estándar, para resolver diferentes problemas.
Se tiene el siguiente problema:
El valor acumulado de una cuenta de ahorros que se basa en pagos periódicos puede calcularse con la ecuación de anualidad vencida
En esta ecuación, \(A\) es el monto de la cuenta, \(P\) es la cantidad que se deposita periódicamente e \(i\) es la tasa de interés por periodo para los \(n\) periodos de depósito. A un ingeniero le gustaría tener una cuenta de ahorros con un monto de \(750 000\) dólares al momento de retirarse dentro de 20 años, y puede depositar \(l500\) dólares mensuales para lograr dicho objetivo. ¿Cuál es la tasa mínima de interés a que puede inverirse ese dinero, suponiendo que es un interés compuesto mensual?
La solución es encontrar \(i\) para los datos dados. Este problema no tiene solución cerrada, entonces se resuelve con aproximaciones numéricas. Para consultar uno de los métodos para las soluciones numéricas, comparto el siguiente video (suscribete y dale like XD)
El probleam se puede escribir como
entonces encontrar el valor de \(i\) es encontrar la raíz de la siguiente función
Entonces, implementamos do cosas,
Una función que realice el calculo de la función \(f\)
Buscamos un módulo (afortunadamente existe) que tenga impeentados los algoritmos para encontrar aproximaciones de raíces de funciones.
Se instala el módulo de scipy en caso que no se tenga instalado
conda install scipy
Implementamos la función \(f\)
def f(i):
A = 750000
P = 1500
n = 20 * 12
return(A - (P / i) * ((1 + i) ** n - 1))
Se importa el módulo y la función correspondiente
from scipy.optimize import fsolve
int_mensual = fsolve(f, 0.1)
print("la tasa de interés anual es:" + str(int_mensual * 12 * 100))
la tasa de interés anual es:[6.66093828]
Si se quiere resolver el problema de forma gráfica (pienso que es una solución suficiente)