вопрос про ткинтер, годовыхInterestRate не определен - PullRequest
0 голосов
/ 04 апреля 2019

Мне нужна помощь с моим кодом, мое задание - рассчитать ежемесячный платеж и общий платеж с учетом процентов. Пользователь вводит сумму кредита и годы. Затем программа отображает платежи в окне, используя tkinter, пока процент не достигнет 8.0.

Моя проблема в том, что я не могу заставить свою программу отображать проценты, она отображает только 0,0, но выдает ошибку «yearInterestRate is not определена», программа отображает ежемесячный и общий платеж просто отлично, но только первую строку и не показывает остальные платежи.

Я действительно новичок в программировании, поэтому любые советы приветствуются.

Вот ссылка на полный файл: https://pastebin.com/AUicQzu0

def Calculate(self):
    monthlyPayment = self.getMonthlyPayment(
        float(self.loanamountVar.get()),
        int(self.yearsVar.get()),
        float(self.annualInterestRateVar.get()))

    self.monthlyPaymentVar.set(format(monthlyPayment, '10.2f'))
    totalPayment = float(self.monthlyPaymentVar.get()) * 12 * int(self.yearsVar.get())
    self.totalPaymentVar.set(format(totalPayment, '10.2f'))
    self.annualInterestRateVar.set(annualInterestRate)

def getMonthlyPayment(self, loanamount, years, annualInterestRate):

    annualInterestRate = 5.0
    while annualInterestRate <= 8.0:
        monthlyInterestRate = annualInterestRate / 1200
        monthlyPayment = loanamount * monthlyInterestRate / (1 - 1 / (1 + monthlyInterestRate) ** (years * 12))
        annualInterestRate += 1.0 / 8
        return monthlyPayment

1 Ответ

0 голосов
/ 05 апреля 2019

В последней строке в Calculate вы пытаетесь получить значение из переменной annualInterestRate и присваиваете self.annualInterestRateVar

self.annualInterestRateVar.set(annualInterestRate)

Но annualInterestRate является локальной переменной, которая существует только в Calculate ине имеет ничего общего с локальной переменной annualInterestRate, которая существует в getMonthlyPayment

Поэтому вы пытаетесь получить значение из переменной annualInterestRate, но вы не присвоили значение annualInterestRate в Calculate.

Для Python вы пытаетесь получить значение из переменной, которую вы никогда не создавали.Итак, Python display

 annualInterestRate is not defined

Я не знаю, какое значение вы пытаетесь получить в self.annualInterestRateVar.set(...).Если это значение из локальной переменной annualInterestRate, которое существует в getMonthlyPayment, то, возможно, вам следует вернуть его из getMonthlyPayment

return monthlyPayment, annualInterestRate

и ввести Calculate

monthlyPayment, annualInterestRate = self.getMonthlyPayment(...)

Кстати: у вас неверный отступ в цикле while в getMonthlyPayment, и он выйдет из getMonthlyPayment после первого цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...