1

次のコードでは、

all_digits = set(range(10))
print all_digits
for i in range(102,167):
    digits = set(k for k in (str(i)))
    if len(digits) != 3:
        continue
    print "digits:", digits
    remaining_digits = all_digits - digits
    print "remaining:", remaining_digits

数字セットには 3 つの要素が含まれています。私はそれらのセットの違いが欲しいのですが、remaining_digits常にすべての桁があります。ここで何が間違っていますか?これは、私が取得している出力のサンプルです。

set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
digits: set(['1', '0', '2'])
remaining: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
digits: set(['1', '0', '3'])
remaining: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
digits: set(['1', '0', '4'])
remaining: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
digits: set(['1', '0', '5'])
remaining: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
digits: set(['1', '0', '6'])
remaining: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
digits: set(['1', '0', '7'])
remaining: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
digits: set(['1', '0', '8'])
remaining: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
4

1 に答える 1

7

all_digits0はから までの 10 個の整数のセットですが、9digitsのような 1 文字の文字列のセットです"0"。種類が違うので、セット違いが思うように動かない。

希望どおりに動作させるには、すべて整数を使用するか、すべて文字列を使用します。たとえば、次のようになります。

all_digits = set(map(str, range(10)))
于 2012-08-27T22:47:35.420 に答える