2015-04-12 81 views
0

我想弄清楚如何减去每日复利利息的贷款付款。现在,我想我已经得到了正确的代码,在10年的贷款,每天减去支付金额:每月减去每日复利利息的贷款付款

P = 20000 
r = .068 
t = 10 
n = 365 

payment = 200 

for payment_number in xrange(1, n*t): 

    daily_interest = P * (1+(r/n)) - P 

    P = (P + daily_interest) - payment 

    print P 

我想如果可能,它仍然打印日均余额而是每个月减去支付而不是每天。最初我虽然可能使用xrange(1,30)的嵌套循环,但我不确定这是否正常工作。在此先感谢您的建议!

回答

0

如何插入if语句用于此目的?

P = P-200 if payment_number%30 == 0 else P 

如果payment_number变量是30

+0

不要忘记二月。 – domoarrigato

0

多这将运行“月”是一个复杂的想法。要完全处理这些月份,您需要使用日期时间模块。

from datetime import date, timedelta 
date_started = date(2000,1,1) 

所以说你是从开始日期123天,我们需要计算日期:所以现在我们知道需要计算多少天是日期和第一之间

date = date_started + timedelta(days=123) 
>>> date 
datetime.date(2000, 5, 3) 

本月,dateutil模块可以帮助我们(你将不得不下载它)。

from dateutil.relativedata import relativedelta 
firstofmonth_date = date_started + relativedelta(months=4) 
tddays = firstofmonth_date - date_started 
days = tddays.days 

然后,只需将“天”放入已有的功能中,您应该很好。我唯一留给你的部分是确定你的日期之间已经过了多少个月。