Где моя петля идет не так? - PullRequest
0 голосов
/ 24 марта 2012

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

По сути, то, что я сделалдалеко, это кодировать что-то, что будет принимать базовое значение (например, 10), забрать его с баланса кредитной карты (с учетом процентов), и, если общее количество месяцев, необходимое для перевода баланса вотрицательное значение (например, выплачено) выше 12, оно прибавляется к «minmonth» (сумме, подлежащей выплате за месяц) до тех пор, пока число месяцев не станет равным или меньше 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

Ответы [ 2 ]

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

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

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

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

0 голосов
/ 24 марта 2012
months = 0

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

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

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