为了账号安全,请及时绑定邮箱和手机立即绑定

从 aaaa 到 zzzz python

从 aaaa 到 zzzz python

墨色风雨 2023-08-22 16:00:08
我需要找到一种使用 python 从 aaaa 暴力破解到 zzzz 的方法(aaaa、aaab、aaac...zzzz)。类似于 0000 到 9999。有没有一种“神奇”的方法可以使用循环和列表来做到这一点?
查看完整描述

3 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您可以使用以下方法简洁地完成此任务itertools.product

import itertools

import string


for elem in itertools.product(string.ascii_lowercase, repeat=5):

    ...

以下是此方法生成的前 30 个值的示例:


>>> values = itertools.product(string.ascii_lowercase, repeat=5)

>>> print(list(itertools.islice(values, 30)))

[

    ('a', 'a', 'a', 'a', 'a'), 

    ('a', 'a', 'a', 'a', 'b'), 

    ('a', 'a', 'a', 'a', 'c'), 

    # --Snip -- 

    ('a', 'a', 'a', 'a', 'x'), 

    ('a', 'a', 'a', 'a', 'y'), 

    ('a', 'a', 'a', 'a', 'z'), 

    ('a', 'a', 'a', 'b', 'a'), 

    ('a', 'a', 'a', 'b', 'b'), 

    ('a', 'a', 'a', 'b', 'c'), 

    ('a', 'a', 'a', 'b', 'd')

]

请注意,此序列中有26**5 == 11881376一些值,因此您可能不希望将它们全部存储在列表中。在我的系统上,这样的列表大约占用 100 MiB。


查看完整回答
反对 回复 2023-08-22
?
狐的传说

TA贡献1804条经验 获得超3个赞

这是一个非常“基本”的例子:


chars = 'abcdefghijklmnopqrstuvwxyz'

my_list = []


for c1 in chars:

    for c2 in chars:

        for c3 in chars:

            for c4 in chars:

                my_list.append(c1+c2+c3+c4)

                

print(my_list)


查看完整回答
反对 回复 2023-08-22
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

知道你认为什么是“神奇的”并不容易,但我没有看到循环中的神奇之处。

这是一种变体:


cs = 'abcdefghijklmnopqrstuvwxyz'

list(map(''.join, [(a,b,c,d) for a in cs for b in cs for c in cs for d in cs]))


查看完整回答
反对 回复 2023-08-22
  • 3 回答
  • 0 关注
  • 1582 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信