Guten Morgen,
ich habe vorher angefangen mir ein bisschen Python anzueignen (Naja ich versuch es gezwungenermaßen zumindestens mal ).
Ich soll es anhand einem Skript mit dazugehörigen Übungsaufgaben lernen, aber bei einer Aufgabe komme ich irgendwie einfach nicht weiter bzw. habe einfach keinen Plan wie ich das machen soll..
Die Aufgabe lautet:
Schreiben Sie eine Funktion menge(1), welche eine Liste bekommt und diese ohne Duplikate zurückgibt.
Beispiel umdrehen([1,2,4,2,3,1,4]) -> [1,2,4,3]
Ich weiß, dass das für euch vielleicht ein Witz ist, aber ich habe trotzdem keinen Plan
Wäre echt super wenn sich einer von euch mir annehmen könnte und mir da mal was schreiben könnte und besten Falls auch noch kurz erklären kann
Schon mal vielen Dank an euch!
Lg
Verplante Anfängerin ;-)
Die einfachste Lösung wäre es die Liste zu nehmen, ein Set daraus zu erstellen (zur Erinnerung: Sets sind sozusagen Mengen, sie beinhalten keine Duplikate) und dieses Set zu einer Liste zu machen. Alternativ erstellst du eine neue Liste, gehst durch die alte und fügst der neuen Elemente der alten hinzu falls sie nicht schon in der neuen vorhanden sind (dafür ist eine Bedingung mit if und der in-Operator hilfreich).
Beide Ansätze sollten einfach umsetzbar sein. Ich vermute die Musterlösung wäre die zweite Variante.
Beide Ansätze sollten einfach umsetzbar sein. Ich vermute die Musterlösung wäre die zweite Variante.
Ich würde noch eine Mischform vorschlagen: Sich in einem `set()` laufend merken welche Elemente man schon gesehen hat und deshalb dem Ergebnis nicht mehr hinzufügen. Das hat dann nicht das ungünstige Laufzeitverhalten als wenn man immer linear in der Ergebnisliste sucht ob ein Element schon drin ist.
Ansonsten Beschreibe doch mal was Du Schritt für Schritt tun würdest/müsstest und setze das in so weit Du kommst in Quelltext um.
Ansonsten Beschreibe doch mal was Du Schritt für Schritt tun würdest/müsstest und setze das in so weit Du kommst in Quelltext um.
Danke für eure schnellen Antworten!
Leider ist noch nichts mit sets in meinem Skript vorgekommen, es ist für mich als wie ihr chinesisch sprecht
Und ich habe auch leider irgendwie keine Ahnung wie ich überhaupt anfangen soll..
Danke für eure Hilfe, ich versuch mal meinem Chef zu erklären, dass Python nichts für mich ist
Leider ist noch nichts mit sets in meinem Skript vorgekommen, es ist für mich als wie ihr chinesisch sprecht
Und ich habe auch leider irgendwie keine Ahnung wie ich überhaupt anfangen soll..
Danke für eure Hilfe, ich versuch mal meinem Chef zu erklären, dass Python nichts für mich ist
Man muss ja auch kein set verwenden. Die von webspider beschriebene Alternative arbeitet anders.muc hat geschrieben:Leider ist noch nichts mit sets in meinem Skript vorgekommen, es ist für mich als wie ihr chinesisch sprecht
Die Frage ist jetzt eher, welche Sprachelemente du kennst (und verwenden darfst).
Schleifen wird es ja sicher schon gegeben haben.
Code: Alles auswählen
data = [1,2,4,2,3,1,4]
for element in data:
print element
Code: Alles auswählen
if 21 * 2 == 42:
print 'Antwort!'
Code: Alles auswählen
if 23 in [1, 2, 4, 8, 16, 32]:
print 'Something went wrong'
Damit hast du nahezu alles, was du für dein Programm brauchst.
Du bewegst dich hier auf Grundlagenniveau. Ich meine das jetzt überhaupt nicht böse, aber wenn du das Problem hier nicht lösen kannst, dann ist nicht Python nichts für dich, dann ist Programmierung egal in welcher Sprache nichts für dich.muc hat geschrieben:Danke für eure Hilfe, ich versuch mal meinem Chef zu erklären, dass Python nichts für mich ist
@muc: Dann lass `set()` weg und arbeite wie webspider im zweiten Ansatz beschrieben hat, nur mit Listen. Wo liegen denn konkret die Probleme? Weist Du was eine Liste ist? Eine Funktion? Argumente und Rückgabewert einer Funktion? Eine ``for``-Schleife? Bedingte Ausführung von Code mittels ``if``? Kennst Du die `append()`-Methode auf Listen? Den ``in``-Operator auf Listen?
Beschreibe doch mal in Worten was Schritt für Schritt passieren muss um das gewünschte Ergebnis zu erhalten. Wie würdest Du jemandem erklären der ziemlich beschränkt ist, was er machen muss wenn er einen Zettel mit der Zahlenfolge 1,2,4,2,3,1,4 hat, und einen weiteren Zettel erstellen soll wo die Zahlen ohne Duplikate drauf stehen‽
Beschreibe doch mal in Worten was Schritt für Schritt passieren muss um das gewünschte Ergebnis zu erhalten. Wie würdest Du jemandem erklären der ziemlich beschränkt ist, was er machen muss wenn er einen Zettel mit der Zahlenfolge 1,2,4,2,3,1,4 hat, und einen weiteren Zettel erstellen soll wo die Zahlen ohne Duplikate drauf stehen‽
-
- User
- Beiträge: 11
- Registriert: Mittwoch 27. März 2013, 10:57
Ich mache zwar eigentlich nicht die Hausaufgaben von anderen Studenten, aber...
Die Asskick-Lösung sieht so aus:
Wenn du deine Hausaufgaben etwas gewissenhafter angehen willst (obwohl obiger Ansatz korrekt und Fehlerfrei ist), darfst du auch das hier machen:
So wird tatsächlich eine Liste statt eines Sets zurückgegeben. In der Aufgabenstellung wird allerdings vermutlich gefordert werden, dass ihr selbst einen unique-Algorithmus entwickelt. Wie das geht habt ihr sicher in der Vorlesung gelernt. Ist aber nicht so schwer, Grundlegender Ansatz ist:
Liste Elementweise durchgehen, wenn Element bereits in Ergebnisliste (if element in list), mit nächstem fortfahren (continue), ansonsten hinzufügen (list.append)
Da ich wie gesagt nicht deine Hausaufgaben mache, darfst du dir über die Implementierung mal selbst Gedanken machen
Gruß Socke
P.S. Programmieren lernen ist nie einfach und erfordert harte Arbeit und durchhaltevermögen. Aber es lohnt sich. Es hat mich in meiner Laufbahn bisher sowohl aus sozialer, als auch aus finanzieller Sicht sehr viel weitergebracht.
// Edit: Liste sortieren war nicht korrekt, ich sollte genauer lesen... (gibt es kein strike-tag?)
Die Asskick-Lösung sieht so aus:
Code: Alles auswählen
menge = set
Code: Alles auswählen
def menge(iterable):
return list(set(iterable))
Liste Elementweise durchgehen, wenn Element bereits in Ergebnisliste (if element in list), mit nächstem fortfahren (continue), ansonsten hinzufügen (list.append)
Da ich wie gesagt nicht deine Hausaufgaben mache, darfst du dir über die Implementierung mal selbst Gedanken machen
Gruß Socke
P.S. Programmieren lernen ist nie einfach und erfordert harte Arbeit und durchhaltevermögen. Aber es lohnt sich. Es hat mich in meiner Laufbahn bisher sowohl aus sozialer, als auch aus finanzieller Sicht sehr viel weitergebracht.
// Edit: Liste sortieren war nicht korrekt, ich sollte genauer lesen... (gibt es kein strike-tag?)