首页 > 解决方案 > Python蛮力密码猜测器

问题描述

我在课堂上做一个关于密码猜测器的任务。我在尝试解决这个任务时偶然发现了很多问题,我的第一种方法是使用 for 循环(下面的代码),但我意识到“for 循环”的数量等于字符串的长度。

a_z = 'abcdefghijklmnopqrstuvwxyz'
pasw = 'dog'
tests = 0
guess = ''
azlen = len(a_z)

for i in range(azlen):
    for j in range(azlen):
        for k in range(azlen):
            guess = a_z[i] + a_z[j] + a_z[k]
            tests += 1
            if guess == pasw:
                print('Got "{}" after {} tests'.format(guess, str(tests)))
                break

input()

上面的程序非常具体。它仅在输入正好 3 个字符时才有效。我读到您可以使用一个名为 intertools 的包,但是,我真的很想找到另一种方法。我想过使用递归,但甚至不知道从哪里开始。

标签: pythonarraysstringfunctionrecursion

解决方案


import string
import itertools

for possible_password in itertools.permutations(string.ascii_letters, 3): 
    print(possible_password)

推荐阅读