如何每月增加一次利息到银行帐户余额?

时间:2018-10-13 21:14:03

标签: python datetime relativedelta

我必须创建一个具有以下功能的银行帐户类:存款,取款,获取余额;所有这些初学者的东西。一切都很容易,我完成它没问题。但是,有一个名为Interest的函数会带来一个interest_rate,这给我带来很多麻烦。为说明起见,此功能应该每月仅根据用户的请求增加一次利息到银行帐户余额中。假设我决定在今天(10月13日)增加5%的利息。该功能将执行并吐出我的新余额。然后,假设我想在第二天(10月14日)增加10%的利息,该函数将不会执行,并且会吐出类似“直到11月1日才可以增加利息”的信息,这是下个月的第一天。在11月1日,如果我尝试增加10%的利息,我会成功,然后在11月2日,如果我再次尝试增加利息,它会说“直到12月1日才能添加利息”,依此类推。我很难过这个。下面是我编写的代码,但是它不仅会执行,因为日期总是在一个月前,而且还会使余额增加利息。

到目前为止,这是我所拥有的,但情况一团糟。有人对我应该做什么有任何提示?我知道它不是在函数内部,而不是应该在赋值中那样,但是我想我会先弄清楚程序的主要图像,然后担心将其合并到我的其余课程中。

from datetime import *
from dateutil.relativedelta import *


rate = 0.10
balance = 1000.00 # i just made up a number for the sake of the code but the
#  balance would come from the class itself
balancewInterest = rate*balance
print(balancewInterest)

# this is where I'm having the most trouble
todayDate = date.today()
print(todayDate)
todayDay = todayDate.day
todayMonth = todayDate.month
if todayDay == 1: # if it's the first of the month, just change the month
    # not the day
    nextMonth = todayDate + relativedelta(months=+1)
else: # if not the 1st of the month, change day to 1, and add month
    nextMonth = todayDate + relativedelta(months=+1, days=-(todayDay-1))
print(nextMonth)
difference = (todayDate - nextMonth)
print(difference.days)

if todayDate >= nextMonth: # add interest only when it's the first of the next
    # month or greater
     interestPaid = rate*balance
     print(interestPaid)
else:
    print("You can add interest again in " + str(abs(difference.days)) \
    + " days.")

2 个答案:

答案 0 :(得分:0)

我现在已经完成了操作。

PS> [System.Array].joinSpaces()
System.Array

答案 1 :(得分:-3)

    def calculate_interest(amount_deposited, time):
        rate_of_interest = 5
        int rest = (amount_deposited*time*rate)
        return int rest
        
        
    print(calculate_interest(1000, 2))


''' for eg: here 1000 is the amount deposited and for 2 years at the rate of interest 5.'''