5

そのため、a から増加して zzz で終わる文字のリストを生成する関数を取得する必要があります。

次のようになります。

a
b
c
...
aa
ab
ac
...
zzx
zzy
zzz

私が現在持っているコードはこれです:

for combo in product(ascii_lowercase, repeat=3):
            print(''.join(combo))

ただし、これは3文字でのみ増加し、出力はより似ています

a
ab
abc
abcd
...

要約すると、文字が増加し、z を超えると aa に戻る機能です。ありがとう!


アップデート:

私は以前と同じ出力を持っています。これが私がそれをプラグインしようとしているものです:

a = hashlib.md5()
for chars in chain(ALC, product(ALC, repeat=1), product(ALC, repeat=1)):
    a.update(chars.encode('utf-8'))
    print(''.join(chars))
    print(a.hexdigest())

私のハッシュは次のようになります。

f1784031a03a8f5b11ead16ab90cc18e

しかし、私は期待しています:

415290769594460e2e485922904f345d

ありがとう!

4

2 に答える 2

11

別のループを追加します。

for x in range(1, 4):
    for combo in product(ascii_lowercase, repeat=x):
        print(''.join(combo))

出力は次のとおりです。

a
...
aa
...
aaa
...
zzz

...膨大な数の組み合わせはどこにありますか。

于 2014-05-15T18:57:10.453 に答える
8
from string import ascii_lowercase as ALC
from itertools import chain, product

for chars in chain(ALC, product(ALC, repeat=2), product(ALC, repeat=3)):
    print(''.join(chars))

質問の更新への対応

私はすべての方法を試しましたが、415290769594460e2e485922904f345dあなたが期待していると述べたものを得ることができませんでした..だから私はあなたがあなたの期待をどのように計算したかわかりません.

product                       : 1a431d62ddd9e78e1b22f8245ad945d0
permutations                  : 52d2529adf73975a4ca82bc7e25db4c6
combinations                  : 52bf3fcd925b2fdc1c52df70b7e33cbb
combinations_with_replacement : 421d5ff16fc211ae253fcc3e81eeb262
于 2014-05-15T18:58:44.810 に答える