Python 绑定CF for循环和if else循环

Python 绑定CF for循环和if else循环,python,for-loop,if-statement,user-defined-functions,Python,For Loop,If Statement,User Defined Functions,我试图使用if/else循环将最后一个现金流添加回par值,但我似乎做不到。如何将int分配给范围内的特定项?我试图做到这一点,如果索引>10,它将增加PAR值。 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/10

我试图使用
if/else
循环将最后一个现金流添加回
par
值,但我似乎做不到。如何将
int
分配给范围内的特定项?我试图做到这一点,如果索引>10,它将增加PAR值。

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))
par=1000
息票率=3
T=5
频率=2
def cf_计算器(par、r、T、freq):
对于范围内的i(T*freq):
如果(T)<(T*freq):
息票=(r/100)*票面价值/频率
打印(优惠券)
其他:
优惠券=(R/100)*PAR/FRQ+PAR
打印(优惠券)
打印(cf_计算器(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))
现在,根据函数的名称,您只需要使用相应的贴现率对每个现金流进行贴现。之后,您可以将所有贴现现金流相加,以获得债券的现值(您可能希望函数返回该值)

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

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))
par=1000
息票率=3
T=5
频率=2
def cf_计算器(par、r、T、freq):
对于范围(0,(T*freq)+1)内的i:
如果i<(T*freq):
息票=((r/100)*面值)/频率
打印(优惠券)
其他:
优惠券=((R/100)*PAR)/FRQ)+PAR
打印(优惠券)
打印(cf_计算器(票面价值、息票率、T、频率))

您希望得到什么样的结果?我很难看到你的代码的目标。我的目标是打印所有的现金流10个周期,并把面值返回到最后一个时期,但我似乎不能增加在终端的票面价值你解释什么<代码> T < /代码>和<代码> r>代码>是什么?而且,看起来你已经在顶部定义了这些变量,但在调用函数时不要实际使用它们。相反,您只是将它们的值硬编码到<代码>如果(T)<(T*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(par,coupon_rate,T,freq))