2

Python でのプログラミングは初めてです...2 つのブロック間で XOR を作成したいのですが、これが私のコードです

def XorBlock(block1, block2):
    l = len(block1);
    if (l != len(block2)):
        raise ValueError, "XorBlock arguments must be same length"
    return [(block1[j]+block2[j]) % 2 for j in xrange(l)];

しかし、私が呼び出すと、それは私に与えます

TypeError: not all arguments converted during string formatting

このコードのバグはどこにあるのか、誰か助けてください..事前に感謝します

4

2 に答える 2

0

おそらくこれはあなたが探しているものです:

def XorBlock(block1, block2):
    l = len(block1)
    if l != len(block2):
        raise ValueError
    #         |-> Converting into int
    return [(int(block1[j])+int(block2[j])) % 2 for j in xrange(l)]
    #                        |-> Converting into int


if __name__ == '__main__':
    print XorBlock("12345", "23456")

>>> XorBlock("010101", "108734")
[1, 1, 0, 0, 1, 1]

両方の引数を文字列として保持するのが最善であると判断しました。バイナリでは0、値の数字の前にいくつかの s が必要になる場合があるためです。

于 2013-10-21T08:21:45.840 に答える