tl;dr : 私のコードは、必要な答えが得られるという点で「機能します」。その答えに到達したときに実行を停止することはできません。出力をスクロールして戻るのに行き詰まっています。
私はプログラミング/Pythonの完全な初心者です。スキルを磨くために、ダモダラン教授のバリュエーション クラスのインプライドエクイティ リスク プレミアムの独自の「ソルバー」をプログラムできるかどうかを確認することにしました。基本的に、コードはいくつかの入力を受け取り、入力に「近い」値になるまで一連の金利を「推測してテスト」します。
現在、私のコードは出力リストを吐き出し、それをスクロールして答えを見つけることができます。あたりです。ただし、 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| の間、コードを実行し続けます。