haeuslermartin hat geschrieben:
Code: Alles auswählen
c=[1,3,2,5,6,6,7,]
#der jeweils nächste Wert mit dem vorhergehenden verglichen, also 3 ist grösser wie 1, 2 ist kleiner wie 3, usw.
#der erste Wert hat ja keinen Vorgänger, darum "for i in c[1:]:", das müsste richtig sein, aber ansonsten blockieren meine grauen Zellen wieder einmal ...
for i in c[1:]:
if i+1 >i:
print("grösser")
elif i+1 ==i:
print("gleich")
else:
print("kleiner")
[/code]
@haeuslermartin:
Ich weiß nicht, ob das noch relevant ist, da du ja schon die beste Lösung genannt bekommen hast, aber vielleicht ist interessant, wo der Fehler in deinem Vorschlag war:
die Variable 'i' enthält immer das aktuelle Listenelement. i+1 >i muss für positive Zahlen immer wahr sein, weil du nicht auf das nächste Listenelement zugreifst, sondern mit der konkreten Zahl rechnest; für den ersten Durchlauf steht da 3+1 > 3. Irgendwie musst du an die anderen Listenelemente kommen, was in dem aktuellen Code nicht möglich ist. Eine einfache Variante deines Vorschlags ist folgende:
Code: Alles auswählen
c = [1,3,2,5,6,6,7,]
j = c[0]
for i in c[1:]:
if i > j:
print("grösser")
elif j == i:
print("gleich")
else:
print("kleiner")
j = i
Man merkt sich den jeweils letzten Wert und vergleicht damit.
Weiterhin ist es möglich mit Indizes zu arbeiten, statt mit den konkreten Werten; das ist ein die "traditionelle" Variante, die man vielleicht in Pascal oder so verwendet hätte:
Code: Alles auswählen
c = [1,3,2,5,6,6,7,]
for i in range(len(c)-1):
if c[i+1] > c[i]:
print("grösser")
elif c[i+1] == c[i]:
print("gleich")
else:
print("kleiner")
Allerdings sollte man keine von beiden Versionen in Python verwenden, weil das sehr umständlich ist. Trotzdem denke ich, dass es vielleicht interessant sein kann zu wissen, wo der Fehler lag, welche Alternativlösungen es gibt, und weshalb man die in Python nicht verwendet.