Seite 1 von 1

Schleife mit break durchbrechen

Verfasst: Sonntag 28. Oktober 2018, 14:34
von Beginner123
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)

Re: Schleife mit break durchbrechen

Verfasst: Sonntag 28. Oktober 2018, 14:45
von __deets__
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.

Re: Schleife mit break durchbrechen

Verfasst: Sonntag 28. Oktober 2018, 14:52
von snafu
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.

Re: Schleife mit break durchbrechen

Verfasst: Sonntag 28. Oktober 2018, 14:57
von Beginner123
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!