у меня есть этот код (часть игры, которую я пытаюсь сделать), который проверяет элементы списка с элементами другого списка... в основном, он сравнивает каждый индекс каждого элемента, если 2 индекса равно удаляет его из списка
вот этот код:
checkctr = 0
x = 0
while checkctr < 4:
if p1guesslist[x] == hidden[x]:
black += 1
p1nonhidden.remove(hidden[x]) #p1nonhidden is a copy of hidden
p1nonmatch.remove(hidden[x]) #p1nonmatch is a copy of p1guesslist
x += 1
checkctr += 1
for p1guess in p1nonmatch: #p1guess is a 4 digit user input
if p1guess in p1nonhidden:
white += 1
пример того, как код работает на выходе:
hidden = [1, 1, 2, 3] #elements of this is randomly generated
p1guesslist = [1, 3, 2, 4] #elements of this list is from p1guess
black = 2 #initial value is 0
white = 1 #initial value is 0
если индекс обоих списков равен, черный получает +1 и удаляется из списка. затем проверяются остальные элементы, если они есть в списке скрытых, если они -белые получают +1
проблема в том, что программа должна запрашивать пользовательский ввод до тех пор, пока не будет достигнуто определенное количество чисел, поэтому p1guesslist меняет элементы при каждом вводе... происходит следующее:
hidden = [1, 1, 2, 3]
p1guesslist = [1, 3, 2, 4] #first input
black = 2
white = 1
p1guesslist = [1, 1, 2, 3] #second input
ValueError: list.remove(x): x not in list
я знаю, что из-за list.remove() возникает ValueError...
поэтому я подумал, есть ли способ вернуть элементы, которые были удалены из скрытых, после проверки, чтобы избежать ошибки
*я поместил мини-версию игры в этот онлайн-блокнот на тот случай, если вы захотите ее увидеть http://shrib.com/UMYKxGiY я использовал Python 3.4.1, чтобы сделать это