绑定 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 个时期的所有现金流,并将面值加回最后一个时期,但我似乎无法在最后加回面值 您能解释一下Tr 的用途吗? 另外,看起来您已经在顶部定义了这些变量,但在调用函数时实际上并没有使用它们。相反,您只是硬编码了它们的值。 ...if (T) &lt; (T * freq) ???这不可能是你的意思。 (如果是,为什么不直接if 1 &lt; 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 循环的主要内容,如果未能解决你的问题,请参考以下文章

IF else 和 for 在一行中循环

JAVA里 FOR循环内 IF 与 ELSE的嵌套使用

小白的Python之路 day1 表达式if ... else ,while循环,for循环

for循环中的if else语句[java]

-密文,if else判断和while,for循环

自学Python2.8-条件循环和其他语句(if else while for)