Простым решением является использование правильного типа данных для задания.
Например, если ваш mylist
был списком (question, answer)
пар, вместо двух отдельных списков;
Question2, Answer2 = random.choice(mylist)
print(Question2)
Userinput = input()
if Userinput == Answer2:
print('Yes, that is correct!')
else:
print('Sorry, wrong answer')
mylist.remove((Question2, Answer2))
Или, наоборот, со словарем вместо списка:
Question2 = random.choice(mydict)
print(Question2)
Userinput = input()
if Userinput == mydict[Question2]:
print('Yes, that is correct!')
else:
print('Sorry, wrong answer')
del mylist[Question2]
Почему это ДИКТ лучше? Ну, во-первых, со списком вам нужно многократно искать список, чтобы найти нужное значение - например, mylist.remove
начинается с начала и сравнивает каждый элемент с вашим значением, пока не найдет правильный. Помимо медленного и чрезмерно сложного, это делает неправильную вещь, если вы можете когда-либо иметь повторяющиеся значения (например, попробуйте a = [1, 2, 3, 1]
, затем value = a[0]
, затем a.remove(value)
и посмотрите, что произойдет ...).
Но если вы не можете изменить структуру данных, вы всегда можете использовать zip
застегивать пару отдельных списков в один список пар на лету:
Question2, Answer2 = random.choice(zip(mylist, myanswers))
print(Question2)
Userinput = input()
if Userinput == Answer2:
print('Yes, that is correct!')
else:
print('Sorry, wrong answer')
mylist.remove(Question2)
myanswers.remove(Answer2)
'enumerate' похоже, что вы хотите –
Вы пробовали поместить эти данные в словарь? Похоже, это было бы более подходящим для ваших целей. – asdf
Что такое Question2answer? –