Error: list index out of range

Nachricht = list index out of range   Quelle = 
Stapelüberwachung:   File 
line 18, in ueberpruefen_1     if Vorgabe[count] != versuch[count]:   File 
line 31, in Spieldurchlauf     if ueberpruefen_1(count) == True:   File 
line 37, in <module>     Spieldurchlauf()Preformatted text

Mein Code:

Vorgabe = [1, 3, 3, 4]
versuch = []


# Eingabe
def EingabeAufforderung(x):
	print("Gebe die " + str(x + 1) + ". Stelle deiner Vermuteten Zahl an.")
	eingabe = int(input())
	return eingabe

def versuchEingeben():
	for count in range(0, len(Vorgabe)):
		versuch.append(EingabeAufforderung(count))


# überprüfen Zahl komplett korekt.
def ueberpruefen_1(count):
	if Vorgabe[count] != versuch[count]:
		return False
	return True


# Der Spieldurchlauf
def Spieldurchlauf():
	vorgabeKopie = Vorgabe
	richtige = 0

	versuchEingeben()
	print(versuch)
	for count in range(0, len(Vorgabe)):
		if ueberpruefen_1(count) == True:
			vorgabeKopie.remove(Vorgabe[count])
			richtige =  richtige + 1
	print(richtige)


Spieldurchlauf()

Immer wenn ich in die Liste durch die Konsole an der zweiten Stelle eine 3 schreibe kommt dieser Fehler ( Die liste war in dem Fall [4, 3, 4, 4]. Hab verschiedene sachen ausprobiert aber der Fehler taucht nur auf wenn ich an der 2. Stelle eine drei hab. Hat jemand ne idee woran das liegen könnte? PS: das Programm sollte eine Konsolenwariante von Mastermind werden.
Danke schon mal im voraus^^

vorgabeKopie.remove(Vorgabe[count])

vorgabeKopie and Vorgabe are both using the same list, so by removing an item from vorgabeKopie you are also removing it from Vorgabe, which means if you delete one item, the last call to ueberpruefen_1 will be out of the index range of Vorgabe because the length is one shorter.

Change:

vorgabeKopie = Vorgabe

To:

vorgabeKopie = Vorgabe.copy()

This will make a copy of the list and not just a copy of the reference to the list.

1 Like

This topic was automatically closed 18 hours after the last reply. New replies are no longer allowed.