Я пытаюсь создать сценарий, который принимает ответ и добавляет его в новый список, а затем проверяет, совпадает ли новый список с другим списком. Когда эти списки совпадают, цикл while должен прерываться.Как сравнить два списка с циклом while
ПРИМЕЧАНИЕ: Каждый вопрос не должен повторяться.
Вот мой кода:
import random
questions = ['a','b','c','d','e']
answered_q = []
while len(answered_q) < len(questions):
question = random.choice(questions)
answered_q.append(question)
raw_input = str(input(question + ": "))
if sorted(questions) == sorted(answered_q):
break
При выполнении я все еще получаю случайные вопросы, но код не перерыва когда списки имеют одинаковое содержимое.
выход:
['b','c','b,'d','d']
Если кто-то может помочь было бы здорово! Спасибо заранее!
Какое у вас определение "same"? Если вы имеете в виду те же _contents_, вы должны использовать набор. Ваша текущая реализация проверяет как содержимое _and_ order. – Delioth
Ну, если 'random.choice' возвращает один и тот же элемент несколько раз, прежде чем он будет один раз, то два списка никогда не будут одинаковыми. Вместо этого вы можете использовать набор. –
Список похоже не совпадает. Обратите внимание, что во втором списке есть две буквы. Это потому, что иногда 'random.choice (questions)' может давать один и тот же результат более одного раза. –