Меня попросили создать программу, которая будет запрашивать информацию о пользователях в следующих категориях - Сумма кредита, Процентная ставка и Ежемесячный платеж
для этой части я написал следующий код -
import csv
name = input('Enter a file name:')
file = name + '.csv'
fieldnames = ['Month', 'Loan Amount', 'Interest', 'Monthly Payment']
fileinfo = [0, float(input('Enter the loan amount:')), float(input('Enter annual interest rate:')), float(input('Enter the monthly payment'))]
with open(file, 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerows([fieldnames, fileinfo])
Эта часть кода работает нормально.
Вторая часть задания состояла в том, чтобы взять введенное пользователем значение для кредита, вычесть ежемесячный платеж, затем умножить это новое значение кредита на 1/12 процентной ставки и, наконец, добавить его к рассчитанной сумме кредита, чтобы получить сумму кредита, которая еще должна быть выплачена. Для этих расчетов у меня есть это:
newval = []
month = 0
e = (fileinfo[1] - fileinfo[3])
compare = e + (e * (fileinfo[2]/12))
if compare > fileinfo[1]:
with open(file, 'r+') as f:
rows = csv.DictReader(f)
write = csv.writer(f)
for row in range(30):
month += 1
loan = float(row['Loan Amount']) - float(row['Monthly Payment'])
interest = float(row['Interest'])
monthpay = float(row['Monthly Payment'])
loan = loan + (loan * (interest/12))
fileinfo1 = [month, loan, interest, monthpay]
write.writerow(fileinfo1)
else:
with open(file, 'a+') as f:
rows = csv.DictReader(f)
write = csv.writer(f)
for row in rows:
month += 1
loan = float(row['Loan Amount']) - float(row['Monthly Payment'])
interest = float(row['Interest'])
monthpay = float(row['Monthly Payment'])
loan = loan + (loan * (interest/12))
fileinfo1 = [month, loan, interest, monthpay]
write.writerow(fileinfo1)
Оператор if-else должен проверять, увеличивается ли ссуда после оплаты за месяц и, если она увеличивается, расчеты следует выполнять только 30 раз. Если оно не увеличивается, расчеты следует выполнять только до тех пор, пока ссуда не станет 0.
Мне нужна помощь в том, чтобы повторять расчеты необходимое количество раз и проверять, увеличивается ли кредит или нет, и выполнять соответствующие действия в соответствии с этой информацией.
Мой код выполняет вычисления только один раз и добавляет его в конец файла. Я не могу заставить его взять только что рассчитанную сумму кредита и выполнить расчеты снова.
Если что-то неясно, пожалуйста, дайте мне знать, и я постараюсь прояснить это и заранее спасибо за любую помощь.
Это мой полный код вместе взятый
import csv
name = input('Enter a file name:')
file = name + '.csv'
fieldnames = ['Month', 'Loan Amount', 'Interest', 'Monthly Payment']
fileinfo = [0, float(input('Enter the loan amount:')), float(input('Enter annual interest rate:')), float(input('Enter the monthly payment'))]
with open(file, 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerows([fieldnames, fileinfo])
newval = []
month = 0
e = (fileinfo[1] - fileinfo[3])
compare = e + (e * (fileinfo[2]/12))
if compare > fileinfo[1]:
with open(file, 'r+') as f:
rows = csv.DictReader(f)
write = csv.writer(f)
for row in range(30):
month += 1
loan = float(row['Loan Amount']) - float(row['Monthly Payment'])
interest = float(row['Interest'])
monthpay = float(row['Monthly Payment'])
loan = loan + (loan * (interest/12))
fileinfo1 = [month, loan, interest, monthpay]
write.writerow(fileinfo1)
else:
with open(file, 'a+') as f:
rows = csv.DictReader(f)
write = csv.writer(f)
for row in rows:
month += 1
loan = float(row['Loan Amount']) - float(row['Monthly Payment'])
interest = float(row['Interest'])
monthpay = float(row['Monthly Payment'])
loan = loan + (loan * (interest/12))
fileinfo1 = [month, loan, interest, monthpay]
write.writerow(fileinfo1)
EDIT
Мне как-то удалось выяснить это самому, поэтому, если у кого-то есть проблемы в будущем, вот мой окончательный код:
import csv
name = input('Enter a file name:')
file = name + '.csv'
fieldnames = ['Month', 'Loan Amount', 'Interest', 'Monthly Payment']
fileinfo = [0, float(input('Enter the loan amount:')), float(input('Enter annual interest rate:')), float(input('Enter the monthly payment:'))]
with open(file, 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerows([fieldnames, fileinfo])
newval = []
month = 0
e = (fileinfo[1] - fileinfo[3])
compare = e + (e * (fileinfo[2]/12))
x = 0
f = open(file, 'a')
write = csv.writer(f)
lp = fileinfo[1]
x = 0
if compare > lp:
while not(x == 30):
loanpre = (lp - fileinfo[3])
loan = loanpre + (loanpre * (fileinfo[2] / 12))
lp = loan
month += 1
x += 1
newval = [month, lp, fileinfo[2], fileinfo[3]]
write.writerow(newval)
else:
while not(lp == 0):
loanpre = (lp - fileinfo[3])
loan = loanpre + (loanpre * (fileinfo[2]/12))
month += 1
lp = loan
if lp <= 0:
lp = 0
newval = [month, lp, fileinfo[2], fileinfo[3]]
write.writerow(newval)
f.close()