13

コンパイラが示した:

File "temp.py", line 56
    return result
SyntaxError: 'return' outside function

どこが間違っていたの?

class Complex (object):
    def __init__(self, realPart, imagPart):
        self.realPart = realPart
        self.imagPart = imagPart            

    def __str__(self):
        if type(self.realPart) == int and type(self.imagPart) == int:
            if self.imagPart >=0:
                return '%d+%di'%(self.realPart, self.imagPart)
            elif self.imagPart <0:
                return '%d%di'%(self.realPart, self.imagPart)   
    else:
        if self.imagPart >=0:
                return '%f+%fi'%(self.realPart, self.imagPart)
            elif self.imagPart <0:
                return '%f%fi'%(self.realPart, self.imagPart)

        def __div__(self, other):
            r1 = self.realPart
            i1 = self.imagPart
            r2 = other.realPart
            i2 = other.imagPart
            resultR = float(float(r1*r2+i1*i2)/float(r2*r2+i2*i2))
            resultI = float(float(r2*i1-r1*i2)/float(r2*r2+i2*i2))
            result = Complex(resultR, resultI)
            return result

c1 = Complex(2,3)
c2 = Complex(1,4)
print c1/c2

これはどうですか?

class Complex (object):
    def __init__(self, realPart, imagPart):
        self.realPart = realPart
        self.imagPart = imagPart            

    def __str__(self):
        if type(self.realPart) == int and type(self.imagPart) == int:
            if self.imagPart >=0:
                return '%d+%di'%(self.realPart, self.imagPart)
            elif self.imagPart <0:
                return '%d%di'%(self.realPart, self.imagPart)
        else:
            if self.imagPart >=0:
                return '%f+%fi'%(self.realPart, self.imagPart)
            elif self.imagPart <0:
                return '%f%fi'%(self.realPart, self.imagPart)

    def __div__(self, other):
        r1 = self.realPart
        i1 = self.imagPart
        r2 = other.realPart
        i2 = other.imagPart
        resultR = float(float(r1*r2+i1*i2)/float(r2*r2+i2*i2))
        resultI = float(float(r2*i1-r1*i2)/float(r2*r2+i2*i2))
        result = Complex(resultR, resultI)
        return result

c1 = Complex(2,3)
c2 = Complex(1,4)
print c1/c2
4

6 に答える 6

16

インデントを確認します。見落とします。タブとスペースを混在させている可能性はありますか?PEP8 (Pythonスタイルガイド)では、 4つのスペースのみを使用することを推奨しています。他の言語とは異なり、whitepaceはPythonで大きな違いを生むため、一貫性が重要です。

上記はまた、次の推奨事項を作成します。

-tオプションを指定してPythonコマンドラインインタープリターを呼び出すと、タブとスペースが不正に混在するコードに関する警告が発行されます。-ttを使用すると、これらの警告はエラーになります。これらのオプションを強くお勧めします!

特に、2番目elseはオフになっているようで(おそらくインデントされている必要があります)、この方法def __div__(self, other):も(他の方法と同じレベルである必要があると思いますdef-つまり、インデントされているのではなく「アウト」に移動されているはずです)。

タブ/ブランクの混合の問題は、両方の文字が「見えない」ため、簡単に発生します。

于 2012-10-25T11:58:24.513 に答える
4

__div__yourが your と同じレベルで宣言されていることを確認してください__str__(現時点では、 内で宣言されています__str_)。

于 2012-10-25T12:00:44.283 に答える
3

私のコピーアンドペーストにより、この行のすべて:

else:
if self.imagPart >=0:
        return '%f+%fi'%(self.realPart, self.imagPart)
elif self.imagPart <0: # Everything under here..

この行に:

    resultI = float(float(r2*i1-r1*i2)/float(r2*r2+i2*i2))
result = Complex(resultR, resultI)
return result # Needs to be unindented.

インデントが間違っています。

于 2012-10-25T11:59:52.437 に答える
0
def functiont(x,y z,k):
    """some function
    """
    if xxxx:
        return True
    else
        return False

上記のコードによると、returnステートメントが関数 def 内でインデントされていることがわかります。この場合、エラーは発生しません。ただし、次のようにリターンがインデントされている場合、Python エラー - SyntaxError :'return' outside functionが発生します。

def functiont(x,y z,k):
    """some function
    """
if xxxx:
    return True
else
    return False
于 2019-06-21T23:20:08.570 に答える