Python 密码猜测器不';不能打印足够的字符
其思想是,您输入任何密码/字符,然后它尝试通过尝试不同的字母和数字组合来查找您输入的密码(这真的是毫无意义的,哈) 现在的问题是“猜”一次只能打印出一个字母或数字。似乎也有重复的。例如,我发现字母“e”被打印了6次,但应该只打印一次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
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')
您的代码无法将多个随机字符连接到一个更大的密码中;它只会猜一个字母。