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

使用随机模块避免重复值

使用随机模块避免重复值

潇湘沐 2021-09-02 16:05:01
下面是一个“蛮力”词猜测......事情。我不是要向我的兄弟姐妹证明即使知道使用蛮力的字符数也需要多长时间才能找到密码。在让它运行了几个小时但没有成功之后,我认为他明白了。现在我想在它背后放一些逻辑,而对于我的生活,我无法弄清楚。我在网上找到了类似于我想要的东西,但我不知道如何使它适应我的代码。import stringimport randomdef 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我想我需要一个变量来跟踪所有猜测的选择,并将其与新字符串进行比较并设置它们,以便它们不能相等,但老实说我不知道。任何帮助都是很好的帮助。
查看完整描述

2 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

如果有人要系统地尝试所有不同的密码,那么他需要迭代所有可能的组合,而不是尝试两次相同的组合。这是在 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))


查看完整回答
反对 回复 2021-09-02
?
翻过高山走不出你

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

比随机生成猜测并与已使用的选项列表进行比较更好的选择是通过算法创建所有可能的 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


查看完整回答
反对 回复 2021-09-02
  • 2 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

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