Programmering nivå 2

Kap 2.7 – Miniuppgift: datalagring och logik

Bygg en enkel bibliotekskatalog med listor, dictionaries, sökning och sortering.

Mål med lektionen

När du har arbetat klart med denna lektion ska du:

  • Kunna lagra och organisera data med hjälp av listor, tuples eller dictionaries.
  • Använda kontrollstrukturer för att skapa enkel programlogik.
  • Kombinera olika koddelar till ett fungerande program.
  • Planera, strukturera och reflektera över din egen lösning.

Så här lär du dig bäst

Börja med att tänka igenom vad programmet ska göra. Skapa en enkel plan i punktform eller pseudokod. Skriv koden steg för steg och testa ofta. Reflektera över hur du kan förenkla din lösning och återanvända kod.

Uppgift: Bibliotekskatalog

Skapa ett program där användaren kan:

  1. Lägga till böcker med titel, författare och år.
  2. Söka efter en bok utifrån titel eller författare.
  3. Skriva ut hela katalogen i alfabetisk ordning efter titel.

Förslag på struktur

Pseudokod:

Skapa tom lista för böcker som dictionaries

Meny: Lägg till / Sök / Visa alla / Avsluta

IF val == Lägg till:
    Läs in titel, författare, år
    Skapa dictionary och lägg till i listan

IF val == Sök:
    Läs in sökord
    Skriv ut alla böcker som matchar titel eller författare

IF val == Visa alla:
    Sortera listan och skriv ut

Kodexempel

def add_book(catalog):
    title = input("Titel: ")
    author = input("Författare: ")
    year = input("År: ")

    book = {"title": title, "author": author, "year": year}
    catalog.append(book)

def search_books(catalog):
    query = input("Sök titel eller författare: ").lower()

    found = [
        book for book in catalog
        if query in book["title"].lower() or query in book["author"].lower()
    ]

    for book in found:
        print(f"{book['title']} av {book['author']} ({book['year']})")

def print_catalog(catalog):
    sorted_books = sorted(catalog, key=lambda x: x["title"])

    for book in sorted_books:
        print(f"{book['title']} av {book['author']} ({book['year']})")

def main():
    catalog = []

    while True:
        print("\n1. Lägg till bok\n2. Sök bok\n3. Visa alla\n4. Avsluta")
        choice = input("Välj: ")

        if choice == "1":
            add_book(catalog)
        elif choice == "2":
            search_books(catalog)
        elif choice == "3":
            print_catalog(catalog)
        elif choice == "4":
            break
        else:
            print("Ogiltigt val.")

main()

Utmaning

  • Spara och läs katalogen från en fil.
  • Lägg till funktion för att ta bort eller redigera en bok.
  • Hantera dubbletter genom att kolla om en bok redan finns.

Reflektion

  • Hur valde du att strukturera datan? Varför?
  • Hur kan du utveckla programmet för att bli mer användarvänligt?
  • Vilka delar var svårast och varför?

Tillbaka till Kapitel 2