0

3つのチェックを実行する必要がある関数を作成しました。テストのいずれかが失敗すると、LookupErrorタイプの例外が返されるはずですが、機能しません。(* verify_checksumは別の関数です)

def check_datagram(datagram, src_comp, dst_app):
    try:
        src_comp==datagram[0:16]
    except LookupError:
        return "Mismatch in src_comp"
    try:
        dst_app==datagram[40:48]
    except LookupError:
        return "Mismatch in dst_app"
    try:
        verify_checksum(datagram)
    except False:
        return "Wrong checksum"
    return True

例えば:

入力:

check_datagram("1111000000001111000011111111000001010101101010101111111111111111000000001111111100000000","0000111100001111", "11110000")

期待される出力:

"Mismatch in dst_app"
4

2 に答える 2

3
def check_datagram(datagram, src_comp, dst_app):
    if src_comp != datagram[0:16]:
        raise LookupError("Mismatch in src_comp")
    if dst_app != datagram[40:48]:
        raise LookupError("Mismatch in dst_app")
    if not verify_checksum(datagram):
        raise LookupError("Wrong checksum")
    return True # redundant?
于 2012-12-10T20:03:19.747 に答える
0

NPEの回答からの構築では、宣言されたcheck_datagram()関数を使用する場合を除いて、try..を使用する必要があります。

#python3
try:
    check_datagram(a,b,c)
except LookupError as e:
    print(str(e))

これにより、発生したエラーからメッセージを取得できます。

于 2012-12-13T05:45:21.710 に答える