下面是一个“蛮力”一词的猜测...我无法向兄弟姐妹证明即使使用蛮力知道字符数也能找到密码。让它运行了两个小时都没有成功之后,我认为他明白了。现在,我想在后面加上一些逻辑,对于我自己的一生,我无法弄清楚。我在网上发现了与我想要的东西相似的东西,但是我不知道如何使其适应我的代码。
import string
import random
def make_random():
return''.join([random.choice(string.ascii_uppercase) for n in xrange(3)])
while True:
random2=make_random()
if random2 != "AAA":
print(random2)
if random2 == "AAA":
print("AAA")
print("Found")
break
我认为我需要一个变量来跟踪所有已经猜到的选择,并将其与新字符串进行比较并将其设置为不相等,但老实说我不知道。
任何帮助都是很好的帮助。
答案 0 :(得分:3)
如果有人要系统地尝试所有不同的密码,那么他需要遍历所有可能的组合,而不必两次尝试相同的组合。这是在Python中执行此操作的一种方法:
import itertools
import string
real_pass = 'AAC'
def find_num_iterations_to_guess_password(pass_length):
all_letters = string.ascii_uppercase
iterations = 0
for i in itertools.product(all_letters, repeat=pass_length):
guess = ''.join(i)
if guess == real_pass:
print(f'the real password is {guess} and was guessed after {iterations}')
break
iterations += 1
find_num_iterations_to_guess_password(len(real_pass))
答案 1 :(得分:0)
比随机生成猜测并与已使用的选择列表进行比较更好的选择是,通过算法创建所有可能的n长度乘积并对其进行迭代:
from itertools import product
import string
for i in product(string.ascii_uppercase, repeat=3):
if ''.join(i) == 'AAA':
print("Found")
break
编辑:使用product
,而不是permutation