tl;博士:我的代码“有效”,因为它给了我需要的答案。当它达到那个答案时,我就是无法让它停止运行。我坚持滚动输出。
我是编程/Python 的完全新手。为了磨练我的技能,我决定看看我是否可以为Damodaran 教授的估值课程中的隐含股票风险溢价编写自己的“求解器”。本质上,该代码接受一些输入并“猜测和测试”一系列利率,直到它获得与输入“接近”的值。
现在我的代码会输出一个输出列表,我可以向后滚动以找到答案。这是正确的。但是,我一辈子都无法使用while函数让代码“停止”在正确的值上。
我有以下代码:
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|,继续运行代码。