python 使用numpy数组创建简单的密码破解程序

cnjp1d6j  于 2022-11-21  发布在  Python
关注(0)|答案(2)|浏览(131)

我正在尝试创建一个(数字)密码破解函数使用numpy数组,而不是for循环。
我可以添加什么到我的cracker函数,以避免这个错误?(见图像的代码附加)
Image of my code
我想让cracker函数返回“可能”数组中的值,该数组在用作密码函数中的参数时返回“正确”。

juzqafwq

juzqafwq1#

你可以参考我的办法

def password(correctedpassword):
    if 13 in correctedpassword:
        return "Correct"
    else:
        return "Incorrect"
    
def cracker(testrange):
    possible = np.linspace(0,testrange,testrange+1)
    return password(possible)

调用函数cracker(100)时输出:

'Correct'

(12)调用函数cracker时的输出:

'Incorrect'
mlmc2os5

mlmc2os52#

请不要张贴代码的图片,以供将来参考。请粘贴并格式化它,以便其他用户可以复制它,并轻松地帮助您。
你需要对数组possible的每个元素应用函数password(),并返回值正确的索引。最简单的方法是用一个循环来实现:

def cracker(testrange):
    possible = np.linspace(0, testrange, testrange + 1, dtype=int)
    results = [p for p in possible if password(p) == "Correct"]
    if len(results):
        return results[0]

或者,也可以使用numpy的vectorize函数:

def cracker(testrange):
    possible = np.linspace(0, testrange, testrange + 1, dtype=int)
    results = possible[np.vectorize(password)(possible) == "Correct"]
    if len(results):
        return results[0]

如果存在匹配项,则返回从password()返回“Correct”的值。如果未找到匹配项,则返回None。

相关问题