Python 从现金流列表计算净现值的函数
试图编写一个函数来计算现金流列表的现值。我知道numpy可以很容易地做到这一点,但对于一个赋值,我必须为此编写自己的函数:/ 下面是列表中的三种现金流以及贴现率Python 从现金流列表计算净现值的函数,python,python-3.x,finance,Python,Python 3.x,Finance,试图编写一个函数来计算现金流列表的现值。我知道numpy可以很容易地做到这一点,但对于一个赋值,我必须为此编写自己的函数:/ 下面是列表中的三种现金流以及贴现率 cfList = [20, 50, 90] r = 0.05 这是我到目前为止写的函数。f=0,因为我想从第一个现金流开始(在本例中为20)。i=1,因为对于第一个流量,其上升到第一次方,第二个流量(50)将平方,依此类推 def npv(cfList, r):
cfList = [20, 50, 90]
r = 0.05
这是我到目前为止写的函数。f=0,因为我想从第一个现金流开始(在本例中为20)。i=1,因为对于第一个流量,其上升到第一次方,第二个流量(50)将平方,依此类推
def npv(cfList, r):
f = 0
i = 1
pv = cfList[f] / ((1 + r) ** i)
while i < len(cfList):
f += 1
i += 1
return pv
print(npv(cfList, r))
def npv(cfList,r):
f=0
i=1
pv=cfList[f]/((1+r)**i)
而i
然而,这个输出只给出了第一个现金流的PV,而不是列表中所有三个的总和。如果你能帮我,我非常感激,谢谢 返回现金流列表的净现值如下所示:
def npv(cfList, r):
return sum(f / ((1 + r) ** i) for i, f in enumerate(cfList, 1))
In []:
cfList = [20, 50, 90]
r = 0.05
npv(cfList, r)
Out[]:
142.14447683835436
返回现金流列表的净现值如下所示:
def npv(cfList, r):
return sum(f / ((1 + r) ** i) for i, f in enumerate(cfList, 1))
In []:
cfList = [20, 50, 90]
r = 0.05
npv(cfList, r)
Out[]:
142.14447683835436
您需要对函数中的各个现金流求和并返回该值。此时,您正在返回第一个现金流的pv值,因为在for循环中有一个返回语句 此外,我认为,如果您根据
I
检查while循环,将意味着您将错过最后一次付款值。通常您不需要自己实例化计数器变量(参见下面的示例):
您需要对函数中的各个现金流求和并返回该值。此时,您正在返回第一个现金流的pv值,因为在for循环中有一个返回语句 此外,我认为,如果您根据
I
检查while循环,将意味着您将错过最后一次付款值。通常您不需要自己实例化计数器变量(参见下面的示例):
如果使用while循环遍历列表,那么在while循环中应该有一行执行操作的代码 在第二次迭代中,当i=2=len(cflist)时(不要忘了这一点),您的循环看起来会很早被切断,因为返回调用在while循环中 这应该起作用:
def npv(cfList, r):
f = 0
i = 1
pv = 0
while f <= len(cfList):
pv += (cfList[f] / ((1 + r) ** i))
f += 1
i += 1
return pv
def npv(cfList,r):
f=0
i=1
pv=0
while f如果使用while循环遍历列表,那么在while循环中应该有一行执行操作的代码
在第二次迭代中,当i=2=len(cflist)时(不要忘了这一点),您的循环看起来会很早被切断,因为返回调用在while循环中
这应该起作用:
def npv(cfList, r):
f = 0
i = 1
pv = 0
while f <= len(cfList):
pv += (cfList[f] / ((1 + r) ** i))
f += 1
i += 1
return pv
def npv(cfList,r):
f=0
i=1
pv=0
那么你想把现金流的净现值加起来?你所给例子的预期结果是什么。循环中的返回
,而循环意味着它将立即退出,这不太可能是您想要的,您没有计算您可能要添加到pv
的后续项,然后返回pv
在while
循环之外。那么,您想汇总现金流的净现值吗?你所给例子的预期结果是什么。循环中的返回
,虽然
循环意味着它将立即退出,这不太可能是您想要的,但您没有计算您可能要添加到pv
的后续项,然后在while
循环之外返回pv
。谢谢您和@supershot,谢谢您的帮助和解释,现在清楚多了谢谢你们,@SuperShoot,谢谢你们的帮助和解释,现在清楚多了
def npv(cfList, r):
f = 0
i = 1
pv = 0
while f <= len(cfList):
pv += (cfList[f] / ((1 + r) ** i))
f += 1
i += 1
return pv