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:
- Lägga till böcker med titel, författare och år.
- Söka efter en bok utifrån titel eller författare.
- 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?