Schleife mit break durchbrechen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Beginner123
User
Beiträge: 12
Registriert: Donnerstag 18. Oktober 2018, 07:38

Hallo Zusammen, Ziel bei dem Code hier ist es einfach auszuspucken, ob eine durch 10 teilbare Zahl in der übergebenen Liste L enthalten ist.
Falls ja soll True zurückgegeben werden, falls nicht False. Hier spuckt er mir den Fehler: list index out of range aus, kann mir eine erklären,
was ich falsch gemacht habe? Vielen Dank schon mal

Code: Alles auswählen

def divisor10(L):
    found = False
    for i in L:
        if L[i] % 10 == 0:
            found = True
            break
    return found 
L = [1,2,3,4,5,11,2,3,40,4,2]
divisor10(L)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du bekommst durch die for-Schleife doch schon gleich dein Element. Der versuch, aus dem WERT in der Liste einen INDEX fuer dieselbe zu machen, geht natuerlich bei zB 40 in die Hose. ein einfaches "i % 10" reicht also.

Und statt muehselig eine Variable einzufuehern, kannst du auch gleich einfach mit "return True" rausspringen, und am Ende "return False" schreiben.

Alternativ einfach "return any(x % 10 == 0 for x in L)".

Last but not least: L ist ein schlechter Name, grossgeschriebene Namen in Python sind reserviert fuer Konstanten.
Benutzeravatar
snafu
User
Beiträge: 6862
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Außerdem sollen Namen möglichst keine konkreten Typen enthalten. Anstelle von L (was ja sicher für List steht) wäre etwas wie elements oder items daher besser.

EDIT: Manche würden vielleicht auch numbers oder xs bevorzugen. Im Wesentlichen sollte hier halt kein spezieller Container-Typ vorgegeben werden.
Zuletzt geändert von snafu am Sonntag 28. Oktober 2018, 15:05, insgesamt 1-mal geändert.
Beginner123
User
Beiträge: 12
Registriert: Donnerstag 18. Oktober 2018, 07:38

Achja stimmt, bisher hatte ich Aufgaben mit while Schleifen gelöst und musste da immer über den Index auf die Liste zugreifen. Bei der For-schleife hat man ja schon die Elemente, danke für die Tipps!
Antworten