У меня возникают ошибки с математикой в моем калькуляторе погашения кредита. Я пытаюсь создать класс, в котором я могу создать кредит, повторять его по месяцам или годам, а также применять платежи по кредиту. Я не совсем уверен, где моя проблема заключается в этом коде.
Я попытался изменить способ оплаты и столкнулся с основной проблемой с математикой. Я думаю, что есть основная проблема в том, как у меня начисляются проценты, и в основном балансе.
class loan():
p_i = 0 #initial principle
p_new = 0 #total balance
rate = 0 #interest rate (in %)
acc = 0 #total accrued interest
def __init__(self,p,rate):
self.p_i = p
self.p_new = p
self.rate = rate
def month(self):
if self.p_i == self.p_new:
self.acc += self.p_i * (1 + (self.rate/100)/12)
self.p_new = self.p_i + self.acc
else:
self.acc += self.p_i * (1 + (self.rate/100)/12)
self.p_new = self.p_i + self.acc
def year(self):
if self.p_i == self.p_new:
self.acc += self.p_i * (1 + (self.rate/100)) - self.p_i
self.p_new = self.p_i + self.acc
else:
temp = 0
temp = self.p_i * (1 + (self.rate/100)) - self.p_i
self.p_new += temp
self.acc += temp
def payment(self,amount):
temp = 0
if amount < self.acc:
self.acc -= amount
else:
self.p_i -= amount - self.acc
self.acc = 0
self.p_new -= amount
Я ожидаю, что результат, скажем, для кредита в 10000 долларов с процентной ставкой 5% будет 10500, а затем 11025, а начисленные проценты будут 1025, вместо этого я получаю 11000 и 1000 соответственно.
class
являются переменные класса; было бы неплохо оставить их и определить все необходимые переменные экземпляра с помощью__init__
. Как бы то ни было, значения экземпляра перезапишут инициализацию класса, кроме дляacc
, которую вы не устанавливаете в__init__
. - person kungphu   schedule 29.05.2019