Ошибка значения: список.удалить(x): нет в списке, ошибка возникла при попытке удалить элемент

#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 он действительности. Нет необходимости его переосмысливать.