Kann mir jemand helfen bei dem Python Code?
Feld = [5,4,3,4,5,6]
for i in range(6):
if Feld[i]>Feld[i+1]:
h = Feld[0]
Feld[0] = Feld[1]
Feld[1] = h
print(Feld)
ich will das feld nach zahlen sortieren nach diesem Verfahren aber es geht iwie nicht
1 Antwort
Erstens hast du innerhalb des ifs [0] und [1] anstatt [i] und [i+1] verwendet, das ist schonmal falsch.
Zweitens brauchst du range(5) und nicht range(6). Sonst ist i+1 ein ungültiger Index.
Drittens bringt das so nur die größte Zahl ans rechte Ende.
Stell dir vor die 6 wäre ganz links. Jetzt geh den Code mal Stück für Stück durch:
Du vergleichst die erste Zahl mit der zweiten und tauscht sie falls die erste größer ist. Die 6 steht nun an zweiter Stelle. Nun vergleichst du die zweite Stelle mit der dritten und tauscht sie. 6 steht nur an der dritten Stelle. etc. Du bringst so einfach nur die größte Zahl nach rechts.
Damit du mit diesem Vorgehen die komplette Liste sortierst brauchst du nochmal eine Schleife aussenrum, um das ganze n mal zu wiederholen:
Feld = [5,4,3,4,5,6]
for _ in range(6):
for i in range(5):
if Feld[i]>Feld[i+1]:
h = Feld[i]
Feld[i] = Feld[i+1]
Feld[i+1] = h
print(Feld)
In Python brauchst Du für ein Swap keine Hilfsvariable
Feld[i+1],Feld[i] = Feld[i],Feld[i+1]
Den Code könnte man noch optimieren, indem man die innere Schleife nicht immer ganz ans Ende laufen lässt, denn die Zahlen ganz rechts sind ja dann bereits sortiert. Aber das erspare ich dir mal, hauptsache der Code läuft oder? :D