绑定 CF for 循环和 if else 循环
Posted
技术标签:
【中文标题】绑定 CF for 循环和 if else 循环【英文标题】:Bond CF for loop and if else loop 【发布时间】:2019-08-15 13:21:24 【问题描述】:我正在尝试使用if/else
循环将最后一个现金流添加回par
值,但我似乎做不到。如何将int
分配给范围内的特定项目?我正在尝试这样做,如果索引 > 10,它将重新添加面值。
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 循环是错误的。有没有更好的办法?
【问题讨论】:
您期待什么结果?我很难看到您的代码的目标。 我的目标是打印 10 个时期的所有现金流,并将面值加回最后一个时期,但我似乎无法在最后加回面值 您能解释一下T
和r
的用途吗?
另外,看起来您已经在顶部定义了这些变量,但在调用函数时实际上并没有使用它们。相反,您只是硬编码了它们的值。
...if (T) < (T * freq)
???这不可能是你的意思。 (如果是,为什么不直接if 1 < freq
?)
【参考方案1】:
我认为这就是你的意思:
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))
【讨论】:
以上是关于绑定 CF for 循环和 if else 循环的主要内容,如果未能解决你的问题,请参考以下文章