2012-03-24 2 views
0

Краткое описание: «Теперь напишите программу, которая рассчитывает минимальный фиксированный ежемесячный платеж, необходимый для погашения баланса кредитной карты в течение 12 месяцев».Где мой цикл идет не так?

В сущности, я сделал далеко, это код, который будет использовать базовую ценность (например, 10), забрать ее с баланса кредитной карты (с учетом процентов), а если общий количество месяцев, которое требуется для того, чтобы баланс оставался отрицательным (например, погашенным), превышает 12, он добавляет к «минме» (сумма, подлежащая выплате в месяц), до тех пор, пока количество месяцев не будет равно или ниже 12.

То, что происходит вместо этого, заключается в том, что теперь он подходит к этому и попадает в цикл и постоянно переходит в «другое», а не только делает это один раз, когда количество месяцев ниже 12. Чрезмерно долго для сообщения - http://pastebin.com/yruGDKiP

Где я иду не так? :/

balance = float(raw_input('Enter the outstanding balance on your creditcard: ')) 
interest = float(raw_input('Enter the annual credit card interest rate as a decimal:  ')) 

startbalance = balance 
minmonth = 1000 
months = 0 
monthlyinterest = interest/12 

while(balance > 0): 
    balance = balance * (1 + monthlyinterest) - minmonth 
    months = months + 1 

    if(months > 12): 
     months = 0 
     minmonth = minmonth + 10 
     balance = startbalance 

    else: 
     print 'RESULT!' 
     print 'Total amount to pay per month would be' 
     print minmonth 
     print 'Total months to pay' 
     print months 
+0

Очевидно баланс стал отрицательным, прежде чем месяцев достигнет 12. Подумайте о логических операторов в коде. Изучите поток через время и, если. Это действительно то, что вы хотите? –

+2

Вы задаете себе вопрос, используете ли вы алгоритм типа проб и ошибок? Не можете ли вы рассчитать ответ, используя математические формулы? –

+1

Вам нужно подумать о том, как сделать свою домашнюю работу. Мы можем решить это, но вы узнаете больше, если вы сделаете это сами. Попробуйте пройти через программу в своем уме. Посмотрите, можете ли вы понять наблюдаемое поведение. –

ответ

0
months = 0 

while(balance > 0): 
    months = months + 1 
    if(months < 12): 
     months = 0 

может быть, вы хотели написать месяцев> 12, но не <

+0

Редактировать код, чтобы отразить это, с новой ошибкой. Благодарю. :) – c3ntury

+0

А также баланс должен быть сброшен. Но печать будет работать на самой первой итерации. –

+0

Сделали отредактированный код (и главный пост в свою очередь), чтобы отразить это. Благодарю. – c3ntury

1
  1. Если вы хотите, чтобы показать результат, если баланс, по сути, были погашены, то вам нужно проверить, был ли погашен баланс перед печатью.

  2. Если вы идете на 12 месяцев, но не можете погасить баланс, то для того, чтобы узнать, будет ли увеличение платежа успешным, вам необходимо сбросить весы перед повторным запуском «моделирования».

Попробуйте сделать отдельную функцию, которая проверяет, будет ли данный ежемесячный платеж достаточным, и называя это с постепенным увеличением значений.

Хотя вы действительно должны просто, вы знаете, сделать математику вместо этого методом проб и ошибок бизнеса

+0

Я, кажется, понял это благодаря вашей помощи, я ценю это. – c3ntury

+0

И да, я понимаю, что я должен «делать математику», но, будучи 16, я плохо говорю об алгоритмах геометрических рядов. Привет, однако. – c3ntury

+0

Математика не сложно ... сделайте некоторое исследование и посмотрите, что вы можете выкопать. –

Смежные вопросы