0

私は宿題のためにPythonでコーディングしています。私はいくつかの関数を書きましたが、すべてうまくいきます。3 番目の関数を追加しようとすると、python から「インデントされたブロックが必要です」というメッセージが表示されます。タブとスペースの混在に問題があることはわかっています。両方試してみましたが、違いはありませんでした。別のPCでコード全体を書き直して、タブ間隔を変更してみました。私は無知です...何が問題なのですか?

def xor_bytes(byte1, byte2):
    xor = ""
    for i in range(len(byte1)):
        if byte1[i] == byte2[i]:
            xor = xor + "0"
        else:
            xor = xor + "1"
    return xor

def verify_checksum(datagram):
    checksum = '00000000'
    total = False
    for i in range((len(datagram)/8)-1):
        checksum = xor_bytes(checksum,datagram[8*(i):8*(i+1)])
        if checksum == datagram[len(datagram)-8 : len(datagram)]:
            total = True
    return total
def check_datagram(datagram,src_comp,dst_app):
4

2 に答える 2

1

タブとスペースが混在している可能性がありますが、そうしないでください。

インデントが矛盾している場所python -tt yourscript.pyを検出するために実行します。スペースのみを使用するようにエディターを調整します (タブをスペースに拡張する、インデントにスペースを使用するなど)。

新しい関数の本体を指定する必要があることに注意してください。そうしないと、同じエラーが発生します。

>>> def foo(bar):
... 
  File "<stdin>", line 2

    ^
IndentationError: expected an indented block
于 2012-12-11T19:48:17.027 に答える
0

あなたの例の最後の行の後に何かありますか?

def check_datagram(datagram,src_comp,dst_app):

そうでない場合: Python では、コード ブロックが「空」であってはなりません。私はそれを次のように変更します:

def check_datagram(datagram,src_comp,dst_app):
    pass
于 2013-03-07T18:42:49.873 に答える