Seite 1 von 1
list index out of range
Verfasst: Freitag 24. März 2023, 12:46
von Sahin
Hallo zusammen,
bin in Sachen Programmieren ein Neuling und hab ein Problem mit folgendem Code. Wenn ich es im Übungsprogramm laufen lasse, dann bekomme ich einen " list index out of range" fehler. Ansich tut die Codierung was es soll, aber das Indexing funktioniert anscheinend nicht und ich weiß nicht, warum.
Könnt Ihr helfen?
Danke.
Code: Alles auswählen
lst1=[]
def sublist(lst):
new_lst=[]
i=0
while (lst[i]!=5 or i>=len(lst)):
new_lst.append(lst[i])
i+=1
print(new_lst)
return new_lst
lst1=[1,66,88,99,44,33,5,66,7,8]
print(sublist(lst1))
Re: list index out of range
Verfasst: Freitag 24. März 2023, 13:33
von Sirius3
"Codierung" ist etwas anders als ein "Code".
Man benutzt keine Abkürzungen, oder hängt Nummern Variablennamen. Eine Liste mit Werten (die nicht näher bestimmt sind) nennt man meist `values`.
Über einen Index iteriert man nicht, vor allem nicht mit einer while-Schleife. Das führt nur zu Problemen mit Indizes.
In Deinem Fall solltest Du schauen, welches der größte Wert ist, den `i` annehmen kann.
Der Code mit einer for-Schleife geschrieben, könnte so aussehen:
Code: Alles auswählen
def sublist(values):
result = []
for value in values:
if value == 5:
break
result.append(value)
return result
values = [1,66,88,99,44,33,5,66,7,8]
print(sublist(values))
Für das Problem, einen Wert in einer Liste zu suchen, gibt es aber schon eine passende Methode:
Code: Alles auswählen
def sublist(values):
try:
index = values.index(5)
except ValueError:
index = None
return values[:index]
values = [1,66,88,99,44,33,5,66,7,8]
print(sublist(values))
Re: list index out of range
Verfasst: Freitag 24. März 2023, 14:00
von Sahin
Cool!! Vielen Dank für die sehr elegante Lösung.
Hab jetzt auch eine Lösung:
Code: Alles auswählen
def sublist(lst):
new_lst=[]
i=0
while lst[i]!=5 or i>=len(lst):
new_lst.append(lst[i])
i+=1
if i>=len(lst):
return new_lst
return new_lst
lst1=[1,66,88,99,44,33,5,66,7,8]
print(sublist(lst1))
Re: list index out of range
Verfasst: Freitag 24. März 2023, 14:51
von grubenfox
Sahin hat geschrieben: Freitag 24. März 2023, 12:46
Hallo zusammen,
bin in Sachen Programmieren ein Neuling und hab ein Problem mit folgendem Code. Wenn ich es im Übungsprogramm laufen lasse, dann bekomme ich einen " list index out of range" fehler. Ansich tut die Codierung was es soll, aber das Indexing funktioniert anscheinend nicht und ich weiß nicht, warum.
Könnt Ihr helfen?
Danke.
Code: Alles auswählen
lst1=[]
def sublist(lst):
new_lst=[]
i=0
while (lst[i]!=5 or i>=len(lst)):
new_lst.append(lst[i])
i+=1
print(new_lst)
return new_lst
lst1=[1,66,88,99,44,33,5,66,7,8]
print(sublist(lst1))
kurze Anmerkung: bei dem "und ich weiß nicht, warum" müsste ich mich anschließen. Hier läuft der Code nämlich ohne Fehlermeldung erfolgreich durch.
Re: list index out of range
Verfasst: Freitag 24. März 2023, 18:52
von __blackjack__
@Sahin: Nicht alles was funktioniert ist eine Lösung. Das ist komisch/umständlich und sieht extrem nach „herumgeraten bis es funktioniert“ aus. Ich würde da Nachfragen vom Lehrer erwarten und das Du das nicht wirklich erklären kannst was der Code macht, weil da auch Unsinniges drin steht.
@grubenfox: Auch wenn in der Liste *keine* 5 vorkommt?
Re: list index out of range
Verfasst: Freitag 24. März 2023, 19:10
von grubenfox
Dann gehe ich davon aus, dass es am Ende mit einem Index-Fehler knallt. Aber beim gegebenem Beispiel konnte ich mir nicht vorstellen wo da ein Index-Fehler auftreten sollte und habe den Code deswegen mal versuchsweise durchlaufen lassen. Hätte ja sein können dass ich was übersehe....