Code: Alles auswählen
def f1(l):
for i in range(0,len(l)):
if l[i]%10 != l[i]:
del(l[i])
l.append(l[i]%10)
return l
Code: Alles auswählen
def f1(l):
for i in range(0,len(l)):
if l[i]%10 != l[i]:
del(l[i])
l.append(l[i]%10)
return l
<pädagogik>Eigentlich erst, wenn du die Fehlermeldung mitangibst.</pädagogik>pythonguy hat geschrieben:Die Funktion kriegt eine Liste und soll immer die letzte Ziffer in die neue Liste einfügen (Modulo 10). Leider komme ich nicht drauf, wo der Fehler in dieser Funktion steckt, es sollte eigentlich das machen, was ich will Kann mir jemand einen Tipp geben?Code: Alles auswählen
def f1(l): for i in range(0,len(l)): if l[i]%10 != l[i]: del(l[i]) l.append(l[i]%10) return l
Code: Alles auswählen
def f1(l):
first, last = l[:-1], l[-1]
if last % 10 != last:
first.append(last)
return first
Solche Namen bekommen wir als Informatiker jeden Tag vom Prof...keppla hat geschrieben:l[n] gibt die keine Zahl, sondern einen String zurück (grausame variablen- und funktionsnamen, übrigens).
Danke für den Tip , allerdings suche ich auf den Fehler in dieser kleinen Funktion und eine Fehlermeldung gibt es auch nicht, lediglich die Ausgabe ist falsch und ich würde zugern wissen, was diese Funktion wirklich macht...Oh graus, was ist denn das für ein Code. Du kannst über eine Liste direkt iterieren, da spart man sich die Indexerei und der Code wird sofort einfacher verständlich.
Außerdem sehe ich in de Programm nur eine Liste und die modifizierst du während du drüber iterierst - sowas kann schnell in die Hose gehen. Lass es sein.
Naja, indirekt hast du die Frage selbst schon beantwortet - Quatsch. Bei einem solch kurzen Code ist es einfacher und vorteilhafter das neu zu implementieren, als nach seltsamen Fehlern zu fahnden.pythonguy hat geschrieben:Danke für den Tip , allerdings suche ich auf den Fehler in dieser kleinen Funktion und eine Fehlermeldung gibt es auch nicht, lediglich die Ausgabe ist falsch und ich würde zugern wissen, was diese Funktion wirklich macht...
Code: Alles auswählen
def f1(l):
liste=l[:]
for i in range(len(l)):
if liste[i]%10 != liste[i]:
liste[i]=liste[i]%10
return liste
Code: Alles auswählen
def f1(numbers):
return [number % 10 for number in numbers]
Du hast mich missverstanden: Wenn ichBlackJack hat geschrieben:Ich sehe nicht wie Du bei *der* Funktion *den* Fehler bekommen kannst.
Der ``if``-Test ist überflüssig. Wenn Du sowieso die Modulo-Rechnung durchführend musst, verschwendet der Test nur Rechenzeit. Einfachste und direkteste Möglichkeit die Funktion zu schreiben:
Code: Alles auswählen
def f1(numbers): return [number % 10 for number in numbers]
Code: Alles auswählen
>>> l = [1,2,3]
>>> for i in l:
... print i, l[i]
...
1 2
2 3
3
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
IndexError: list index out of range
>>> l[0]
1
>>> l[1]
2
>>> l[2]
3