Adressbuch
@ Xfd7887a: was soll das eigentlich für eine ID sein? Wenn IDs nicht eindeutig sind, was ist dann der Sinn einer ID. Bei loeschen entfernst Du Elemente aus einer Liste, über die Du iterierst. Das führt zu unvorhergesehenem Verhalten. In Deinem Fall würde aber auch ein 'remove' auf der Liste reichen.
Suchen liefert jetzt eine Liste zurück, so dass aendern und loeschen nicht mehr funktioniert.
Suchen liefert jetzt eine Liste zurück, so dass aendern und loeschen nicht mehr funktioniert.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Der Sinn einer ID ist es zudem auch, dass man einen Datensatz anhand dieser leicht ermitteln kann. Insofern böte es sich an, die äußere Liste durch ein Dictionary zu ersetzen und darin die ID als Schlüssel und ein zugehöriges Adressen-Dict als Wert abzubilden. Damit kannst Du das ``loeschen`` über die ID erledigen und musst nicht mehr iterieren.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Ich habe mal weiter gearbeitet: https://github.com/toxinman/stuff/blob/ ... essbuch.py Sorry für die lange Pause 

@Xfd7887a: das mit dem Suchen ist ja immer noch nicht so toll. Aber was Du haben willst, mußt Du selbst wissen.
Da Du für GUI sowieso Klassen brauchst, kannst Du ja mal zur Übung Deine Addressen in eine Klasse verwandeln.
Da Du für GUI sowieso Klassen brauchst, kannst Du ja mal zur Übung Deine Addressen in eine Klasse verwandeln.
Also muss ich alle Funktionen in eine Klasse stecken?Da Du für GUI sowieso Klassen brauchst, kannst Du ja mal zur Übung Deine Addressen in eine Klasse verwandeln.
Edit: Das Auswählen des richtigen Suchergebnis müsste ja theoretisch mit der GUI gemacht werden.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Alle natürlich nicht - nur diejenigen, die sinnvoll für die (jeweilige) Klasse sindXfd7887a hat geschrieben: Also muss ich alle Funktionen in eine Klasse stecken?

Das kann und sollte auch *ohne* GUI funktionieren. Ich habe mir den aktuellen Stand zwar schon länger nicht mehr angeguckt, aber iirc sind da noch einige unschöne und störende Elemente in dem bisherigen Entwurf.Xfd7887a hat geschrieben: Edit: Das Auswählen des richtigen Suchergebnis müsste ja theoretisch mit der GUI gemacht werden.
Wieso baust Du nicht erst einmal ein textuelles UI mit dem bisherigen auf? Also eines, in dem der Benutzer wirklich über einfache Menüs Aktionen rund um das Adressbuch nutzen kann? Imho wirst Du dann noch besser verstehen, was ein gutes API können muss.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Verstehe Deine Frage so nicht. Wie genau meinst Du das?Xfd7887a hat geschrieben:Muss ich dann alle Eingaben in extra Funktionen packen?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Muss ich es in der Art machen:
?
Code: Alles auswählen
def neue_adresse_hinzufügen():
name = input("Name: ")
...
neue_erstellen(name, ...)
def main():
neue_adresse_hinzufügen()
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Um die Selbständigkeit zu verbessern: Was denkst Du denn?
Versuche (letztlich auch Dir selber) zu erklären, wieso Du solch eine Funktion für sinnvoll hältst. Überlege Dir, ob und welche Alternativen Dir einfallen und überlege, was da Vor- und Nachteile sein könnten...

encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Die Begründung ist nicht wirklich stichhaltig - alles, was eine TUI und eine GUI *nicht* gemeinsam haben, sind per se voneinander unabhängig Dinge. Insofern kannst Du keine Sinnhaftigkeit für Deine TUI daraus schlussfolgern. Aber: Wichtig ist, *dass* Du Funktionen aus dem Kern Deiner Domäne nutzt, um ein TUI zu realisieren! Das legt schon mal nahe, dass man später diese Funktionen *auch* aus einer GUI nutzen kann (und sollte!). Für Deine Frage ist es aber wichtiger zu gucken, *wie* Dein TUI gegliedert sind soll und wie Du welche Operation aufrufst. Stellst Du dabei fest, dass Du immer wieder ähnlichen Code schreibst, um Benutzereingaben abzufragen, so musst Du dann prüfen, ob man solche Funktionalität auch in eine gemeinsame Funktion bündeln kann. Fürs erste sieht mir das hier aber ok aus.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert