#python
Вопрос:
Я создаю простой 4-значный угадыватель паролей, и в моих усилиях сделать его более эффективным, сузив область поиска (удалив элементы из базы данных), я столкнулся с ошибкой ValueError. В моем коде я сохранил список всех возможных 4-значных комбинаций, и если гадатель пароля обнаружит неправильные комбинации, он удалит их из базы данных, чтобы избежать повторных попыток одной и той же комбинации, т. е. свести к минимуму использование комбинации, такой как: 1234, снова и снова.
Это и есть код:
while guesspassword != password:
guesspassword = random.choices(database)
if guesspassword != password:
database.remove(guesspassword)
elif guesspassword == password:
print("Your password is: ", "".join(guesspassword))
Спасибо.
Комментарии:
1. Вам нужно поймать исключение. docs.python.org/3/tutorial/errors.html
2.
random.choices
возвращает список. Вы сделали отступ, чтобы использоватьrandom.choice
?3. @chepner — и как только random.choice будет использован, значение будет в списке, и не должно быть необходимости в обработчике исключений.
4. Что касается комментария Тделани,
'somepassword'
и['somepassword']
это не одно и то же.5. Или, поскольку вы проверяете только известный пароль в базе данных, просто проверьте, соответствует ли
password in database
он действительности. Нет необходимости его переосмысливать.