Doppelte Werte aus Liste löschen und sortieren

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
hohn
User
Beiträge: 3
Registriert: Sonntag 3. April 2022, 10:31

Also, morgen habe ich in programmieren eine Prüfung und wollte heute noch ein paar Beispiele zum Thema Listen üben
Ich bin auf ein Beispiel gestoßen wo man doppelte Werte aus einer Liste löschen muss, und danach die Liste ordnen muss
Jedoch darf ich (bzw. ich und meine Schulklasse) nicht solche Funktionen wie z.B append oder sort benutzen da es sonst zu einfach wäre
Wir sollen nur for-schleifen, while-schleifen und if benutzen um Aufgaben zu lösen.

Bis jetzt bin ich nur so weit bei dem Beispiel gekommen (ich muss sagen das ich auch nicht der hellste bin was programmieren angeht...)

list1 = [1,3,5,4,5,3]

for i in range(len(list1)):
while list1 != list[len(list1) - 1]:
list1 = 0
i += 1

danach sagt er: halt list index out of range
Ich bin mir nicht sicher woran das wirklich liegen könnte weswegen ich hier um Hilfe frage
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Bei mir sagt der Interpreter `TypeError: 'type' object is not subscriptable`.
Beim Programmieren muß man sehr exakt arbeiten, der Computer verzeiht keine Fehler.
Kannst Du beschreiben, was Dein Code machen soll und was er macht?
Bevor Du anfängst, irgend welchen Code zu schreiben, wie würdest Du die Aufgabe selbst Schritt für Schritt lösen.
hohn
User
Beiträge: 3
Registriert: Sonntag 3. April 2022, 10:31

naja, der code soll probieren die Liste zu lesen und doppelte Zahlen durch Nullen ersetzen
Zuerst würde ich wahrscheinlich eine Funktion machen welche mir die doppelten Zahlen rausfiltert, dann würd ich sie alle mit 0 ersetzen und noch eine Funktion schreiben um sie zu sortieren
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Und wie filtert deine Funktion doppelte Zahlen? Denn das so zu beschreiben ist ja nicht deutlich anders als zu sagen "dann schreibe ich eine Funkion, die mein Problem loest". Etwas, das auf nahezu alle Probleme bei der Programmierung zutrifft. Woher weiss denn so eine Funktion, dass das Element an Stelle 3 gleich dem Element an Stelle 23 ist?

Um dir mal einen konkreten Hinweis zu geben, wie man sowas machen kann: du sortierst zuerst deine Liste. Denn dann bist du in der gluecklichen Situation, dass alle gleichen Elemente in deiner Liste *aufeinanderfolgen*. Und loest sich dein Problem sehr einfach dadurch, dass du diese sortierte Liste in eine zweite Liste kopierst, Element fuer Element. Aber wenn das gerade zu kopierende Element gleich dem letzten ist, kopierst du es nicht. Und voila, du hast ein Ergebnis passend zu deiner Anforderung.
hohn
User
Beiträge: 3
Registriert: Sonntag 3. April 2022, 10:31

Das macht natürlich mehr Sinn...
Habe gerade auch eben es geschaft einen Code zu schreiben der doppelten Nummer herausfinden kann
Danke für eure Hilfe bei meinem Problem
Mit euren Tipps sollte ich jetzt in der Lage sein es alleine auszuarbeiten
Antworten