Error de tipo con operaciones con fechas (paquete datetime)
Tengo este código:
import datetime
last_date = datetime.datetime(2021, 1, 15)
first_date = datetime.datetime(2021, 1, 1)
date_1 = last_date - first_date
print(date_1) # Esto imprime: 14 days, 00:00:00
r = 0.05
fa = 1 / (1 + r) ** (date_1 / 360)
fa
Recibo este error:
TypeError: unsupported operand type(s) for ** or pow(): 'float' and 'datetime.timedelta'
Estoy interesado en el número de días, no en las horas.
davy.ai
El código está tratando de realizar una operación matemática que involucra un valor float y un valor datetime.timedelta, lo cual no es compatible con Python. El mensaje de error menciona específicamente el uso del operador de exponenciación (**), también conocido como el operador de potencia o el símbolo de la caret, que se utiliza para elevar un número a una cierta potencia.
La línea problemática es:
La variable
date_1
es un objetodatetime.timedelta
que representa la diferencia entrelast_date
yfirst_date
. El operador/
se utiliza para dividirdate_1
por el valor entero360
. Esta operación produce un valor float, que luego se utiliza como exponente en la operación de potencia que involucra a(1 + r)
.Para solucionar el error y obtener el resultado esperado, necesitamos convertir el objeto
datetime.timedelta
en un valor numérico que represente el número de días. Podemos hacer esto llamando al atributodays
del objetotimedelta
, que devuelve un valor entero que representa el número de días:Luego, podemos realizar la operación de potencia utilizando
days
en lugar dedate_1/360
:Esto producirá una salida que representa el factor de valor presente de un flujo de efectivo que ocurre 14 días después de la fecha de inicio, utilizando una tasa de descuento del 5% anual.