gpt4 book ai didi

python - Bond CF for 循环和 if else 循环

转载 作者:行者123 更新时间:2023-12-01 07:24:42 24 4
gpt4 key购买 nike

我正在尝试使用 if/else 循环将最后的现金流添加回 par 值,但我似乎无法做到这一点。如何将 int 分配给范围内的特定项目?我试图做到这一点,如果指数 > 10,它将添加票面值(value)。

par = 1000
coupon_rate = 3
T = 5
freq = 2


def cf_calculator(par, r, T, freq):
for i in range(T * freq):
if (T) < (T * freq):
coupon = (r/100) * par/freq
print(coupon)
else:
coupon = (r/100) * par/freq + par
print(coupon)



print(cf_calculator(1000,3,5,2))

我知道我的 if 循环是错误的。有更好的办法吗?

最佳答案

我认为这就是您想要做的:

par = 1000
coupon_rate = 3
T = 5
freq = 2


def cf_calculator(par, r, T, freq):
for i in range(0,(T * freq)+1):
if (i) < (T * freq):
coupon = (r/100) * par/freq
print(coupon)
else:
coupon = (r/100) * par/freq + par
print(coupon)



print(cf_calculator(1000,3,5,2))

输出:

15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
1015.0
None

现在,根据函数名称,您只需要用相应的贴现率对每笔现金流进行贴现即可。然后,您可以将所有贴现现金流加在一起,以获得债券的现值(您可能希望函数返回该现值)。

此外,我会稍微重写代码以使其更具可读性:

par = 1000
coupon_rate = 3
T = 5
freq = 2


def cf_calculator(par, r, T, freq):
for i in range(0,(T * freq)+1):
if i < (T * freq):
coupon = ((r/100) * par) / freq
print(coupon)
else:
coupon = (((r/100) * par) / freq) + par
print(coupon)

print(cf_calculator(par,coupon_rate,T,freq))

关于python - Bond CF for 循环和 if else 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57510308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com