2

このコードを終了しようとしていますが、不明なエラー メッセージが表示され続けます。私が間違っていることを理解していません。申し訳ありませんが、私はpythonが初めてです!

助けていただければ幸いです!!

import math

def nCr(n,r):
    f = math.factorial
    return f(n) / f(r) / f(n-r)

class Option(object):

    def __init__(self,s0,u,d,r,t,strike):
        self.s0=s0
        self.u=u
        self.d=d
        self.r=r
        self.t=t
        self.strike=strike

    def price(self):
        q = (self.r - self.d) / (self.u - self.d)
        prc = 0
        temp_stock = 0
        temp_payout = 0
        for x in range(1,self.t+1):
            temp_stock = self.strike*(self.u**(4-x))*(self.d**(x-1))
            temp_payout = max(temp_stock-self.strike,0)
            prc += nCr(self.t,x-1)*(q**(4-x))*((1-q)**(x-1))*temp_payout
        prc = prc / (self.r**self.t)
        return prc


newOption = Option(100,1.07,0.93458,1.01,3,100)
print newOption.price()
4

1 に答える 1

3

コードには少なくとも次の問題があります。

  • プログラムの先頭に math モジュールを含める必要があります。

    インポート数学

  • 「^」演算子を「**」演算子に置き換える必要があります。

(これで十分でない場合は、インデントを確認してください。このメッセージのインデントには小さな問題があります: 関数 price() が左にシフトしています)

これらの修正により、プログラムは 6.77357485848 という出力を生成します。

それが目的の出力であるかどうかを確認してください。

于 2013-02-26T22:17:01.767 に答える