Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 密码猜测器不';不能打印足够的字符_Python_Python 3.x_Pycharm - Fatal编程技术网

Python 密码猜测器不';不能打印足够的字符

Python 密码猜测器不';不能打印足够的字符,python,python-3.x,pycharm,Python,Python 3.x,Pycharm,其思想是,您输入任何密码/字符,然后它尝试通过尝试不同的字母和数字组合来查找您输入的密码(这真的是毫无意义的,哈) 现在的问题是“猜”一次只能打印出一个字母或数字。似乎也有重复的。例如,我发现字母“e”被打印了6次,但应该只打印一次 import random characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" pw = input("Enter a password: \n") pw_le

其思想是,您输入任何密码/字符,然后它尝试通过尝试不同的字母和数字组合来查找您输入的密码(这真的是毫无意义的,哈)

现在的问题是“猜”一次只能打印出一个字母或数字。似乎也有重复的。例如,我发现字母“e”被打印了6次,但应该只打印一次

import random

characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
pw = input("Enter a password: \n")
pw_lenght = len(pw)

while True:

    for i in range(pw_lenght):
        random_character = random.randrange(len(characters))
        pw_guess = characters[random_character]
        if pw_guess == pw:
            print('Password found!\nPassword: ', pw)
            exit()
        print(pw_guess)
假设它一次打印和测试的字母/数字数量与用户输入的字母/数字数量相同

例如: 在输入中键入“password123”。然后它会计算出有多少 用户输入中的字符(本例中为11个),以及 开始尝试并打印不同的字符组合。 现在,一份打印应该包含11个随机字符。然后在某个时候 它将得到正确的组合并停止

如上所述,现在它一次只打印一个字符,还有我不想要的重复字符


我试着只向用户输入一个字母,但它猜对了,所以它可以正常工作。

您的内部循环应该将所有随机字符组合成一个密码猜测,而不是单独猜测每个字母

import random

characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
pw = input("Enter a password: \n")
pw_lenght = len(pw)

while True:

    for i in range(pw_lenght):
        random_character = random.randrange(len(characters))
        pw_guess = ''.join([characters[random.randrange(len(characters))] for x in range(len(pw))])
        if pw_guess == pw:
            print('Password found!\nPassword: ', pw)
            exit()
        print(pw_guess)
import random

characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
pw = input("Enter a password: \n")

while True:
    pw_guess = ''
    for i in range(len(pw)):
        pw_guess += random.choice(characters)
    if pw_guess == pw:
        print('Password found!\nPassword: ', pw)
        break
    print('Password not found.  Incorrect guess: ', pw_guess)

由于Python3.6,您可以使用
random.choises
一次获取更多字符

我建议使用
字符串
-模块以提高可读性

用成千上万的错误猜测填充终端是非常烦人的,所以我稍微修改了代码

import string
import random

characters = string.digits + string.ascii_letters
password = input('Enter a password:\n')
guesses = 1

while True:
    pw_guess = ''.join(random.choices(characters, k=len(password)))
    if password == pw_guess:
        break
    guesses += 1

print('Password found!')
print(f'Password: {pw_guess}')
print(f'{guesses} guesses needed')

您的代码无法将多个随机字符连接到一个更大的密码中;它只会猜一个字母。