0%

Dictionaries und andere Sammlungen · Abschlussprojekt

Abschlussprojekt: Projekt: Einen durchsuchbaren Minikatalog bauen

Du hast jetzt die Bausteine für ein kleines strukturiertes Informationssystem:

  • Dictionaries für Datensätze mit benannten Feldern;

  • eine Liste für mehrere Datensätze in einer Reihenfolge;

  • Schleifen zum Verarbeiten jedes Datensatzes;

  • Funktionen für klar umrissene Vorgänge;

  • eine Suchfunktion, die ein Dictionary oder None zurückgibt;

  • eine Eingabe für eine echte Suchanfrage.

Dein Projekt verbindet sie zu einem durchsuchbaren Minikatalog.

Die Katalogdatensätze

Der Startcode enthält drei Bücher. Behalte ihre Daten und ihre Struktur bei:

catalog = [
    {
        "title": "Kindred",
        "creator": "Octavia E. Butler",
        "year": 1979,
    },
    {
        "title": "A Wizard of Earthsea",
        "creator": "Ursula K. Le Guin",
        "year": 1968,
    },
    {
        "title": "Python Crash Course",
        "creator": "Eric Matthes",
        "year": 2023,
    },
]

Jeder Datensatz hat dieselben Pflichtschlüssel. Du kannst weitere Datensätze hinzufügen, nachdem du das Projekt bestanden hast. Behalte aber diese drei bei, damit die vorbereitete Suche bewertet werden kann.

format_item(item)

Gib eine Zeile in genau dieser Form zurück:

Kindred by Octavia E. Butler (1979)

Die Funktion erhält ein Dictionary und gibt einen String zurück. Sie gibt nichts aus.

show_catalog(catalog)

Gib die Überschrift aus:

CATALOG

Gib dann jeden Datensatz in einer nummerierten Zeile aus, beginnend bei 1:

1. Kindred by Octavia E. Butler (1979)

Rufe format_item(item) für den Text hinter der Nummer auf und führe für die Nummer selbst einen Zähler neben der Schleife, wie du es seit Kapitel 7 kennst.

find_by_title(catalog, query)

Verwende die Vereinbarung aus „Eine Liste von Datensätzen durchsuchen“:

  1. bereinige die Suchanfrage mit .strip().lower();

  2. durchlaufe die Datensätze in einer Schleife;

  3. vergleiche mit jedem kleingeschriebenen Titel;

  4. gib das passende Dictionary zurück;

  5. gib nach der Schleife None zurück, wenn kein Titel passt.

Das Programm auf der obersten Ebene

Nach den Funktionsdefinitionen und dem Katalog:

  1. rufe show_catalog(catalog) auf;

  2. frage genau Search by title: ab;

  3. rufe find_by_title auf;

  4. gib No matching title. aus, wenn das Ergebnis None ist;

  5. gib andernfalls Found: gefolgt von format_item(match) aus.

Submit liefert diese Suchanfrage:

  PYTHON CRASH COURSE

Deine Bereinigung soll damit den dritten Datensatz finden, ohne den gespeicherten Titel zu verändern.

In drei Durchgängen bauen

1. Einen Datensatz formatieren

Vervollständige format_item. Rufe die Funktion vorübergehend mit catalog[0] auf und prüfe die Zeile.

2. Alle Datensätze anzeigen

Vervollständige show_catalog. Prüfe die Nummerierung, die Reihenfolge der Datensätze und die genaue Zeichensetzung.

3. Suchen

Vervollständige find_by_title und verbinde dann die Eingabe mit dem Ergebniszweig. Probiere einen vorhandenen Titel mit ungewöhnlicher Groß- und Kleinschreibung und danach einen nicht vorhandenen Titel.

Die fertige Struktur lesen

Das Programm auf der obersten Ebene sollte kurz sein. Es sagt: anzeigen, abfragen, suchen und berichten. Die Funktionen enthalten die Details, die Liste enthält die Reihenfolge, und jedes Dictionary gibt einem Datensatz aussagekräftige Felder.

Das ist das zentrale Ergebnis dieses Kapitels: Strukturen zu wählen, bei denen die Informationen und die Vorgänge zusammenpassen.

Kapitel 10 wendet sich den Fehlern zu, die echte Eingaben und unvollkommene Daten verursachen können. Du lernst, Tracebacks zu lesen, vor der Umwandlung zu validieren und bestimmte erwartete Fehler zu behandeln, ohne unerwartete zu verbergen.

Aufgabe

Baue den in der Lektion beschriebenen durchsuchbaren Minikatalog.

Anforderungen:

  1. Vervollständige format_item(item) so, dass die Funktion title by creator (year) aus einem Dictionary zurückgibt.

  2. Vervollständige show_catalog(catalog). Gib CATALOG aus und dann jeden Datensatz in einer nummerierten Zeile, beginnend bei 1. Rufe für jeden Datensatz format_item auf.

  3. Vervollständige find_by_title(catalog, query). Bereinige die Suchanfrage, gib das passende Dictionary zurück oder gib nach der Schleife None zurück.

  4. Behalte die drei Datensätze aus dem Startcode und ihre genauen Felder bei.

  5. Zeige nach den Definitionen und Daten den Katalog an.

  6. Frage genau Search by title: ab.

  7. Gib bei None den Text No matching title. aus, andernfalls Found: gefolgt vom formatierten passenden Datensatz.

Submit verwendet vorbereitete Eingaben, deshalb musst du während der Bewertung nichts eintippen.