tl; dr: Мой код «работает», поскольку он дает мне ответ, который мне нужен. Я просто не могу заставить его перестать работать, когда он достигнет этого ответа. Я застрял в прокрутке назад.Новичок Python: Где «пока»?
Я полный новичок в программировании/Python. Чтобы отточить свои навыки, я решил посмотреть, смогу ли я запрограммировать свой собственный «решатель» для «Подразумеваемый риск риска для собственного капитала» от класса оценки профессора Дамодарана. По сути, код вводит некоторые входы и «догадки и тесты» серии процентных ставок, пока не получит «близкое» значение для ввода.
Прямо сейчас мой код выплевывает список выходных данных, и я могу прокрутить его назад, чтобы найти ответ. Это верно. Тем не менее, я не могу на всю жизнь получить код «стоп» с правильным значением с помощью , а.
У меня есть следующий код:
per = int(input("Enter the # of periods forecast ->"))
divbb = float(input("Enter the initial dividend + buyback value ->"))
divgr = float(input("Enter the div + buyback growth rate ->"))
tbondr = float(input("Enter the T-Bond rate ->"))+0.000001
sp = int(input("Enter the S&P value->"))
total=0
pv=0
for i in range(1,10000):
erp = float(i/10000)
a = divbb
b = divgr
pv = 0
temppv = 0
print (sp-total, erp)
for i in range(0, per):
a=a * (1+b)
temppv = a/pow((1+erp),i)
pv=pv+temppv
lastterm=(a*1+tbondr)/((erp-tbondr)*pow(1+erp,per))
total=(pv+lastterm)
на его примере, с входами:
- за = 5
- divbb = 69,46
- divgr = 0,0527
- tbondr = 0,0176
- sp = 1430
Прокрутка назад через выход, я вижу, что мой код дает правильный минимум при epr = 0.0755.
Мой вопрос: где я придерживаюсь , а, чтобы остановить этот код на таком минимуме? Я пробовал много вариаций, но не могу понять. Я ищу, в основном:
while (sp-total)> | 1 |, продолжайте работать с кодом.
Вам не нужно 'while' - это тип цикла. Вам нужно «if», чтобы вырваться из вашего текущего цикла. Может быть, 'если sp - total <1: break' после' print' – voithos