Programmering nivå 2

Kap 2.6 – Problemlösning med listor

Använd listor tillsammans med funktioner, loopar och villkor för att bygga ett större program.

Mål med lektionen

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

  • Kunna använda listor för att lösa sammansatta programmeringsuppgifter.
  • Kombinera listor med funktioner, loopar och villkor.
  • Analysera och bryta ner problem i steg.
  • Strukturera kod som hanterar inmatning, lagring och bearbetning av data.

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

Börja med att analysera uppgiften noggrant. Skapa en algoritm i form av pseudokod eller punktlista innan du börjar koda. Skriv din kod steg för steg och testa varje del. Använd print() för att följa vad som händer i listan under körning.

Scenario: Poänghantering i ett spel

Du ska skapa ett program som:

  • tar emot namn och poäng från flera användare,
  • sparar resultaten i en lista,
  • skriver ut en topplista baserat på poäng,
  • håller igång tills användaren väljer att avsluta.

Programstruktur

Pseudokod:

Skapa en tom lista

WHILE användaren vill fortsätta:
    Läs in namn och poäng
    Lägg till som tuple i listan
    Fråga om användaren vill fortsätta

Sortera listan efter poäng
Skriv ut topplistan

Kodexempel

def add_score(scores):
    name = input("Ange namn: ")

    try:
        points = int(input("Ange poäng: "))
        scores.append((name, points))
    except ValueError:
        print("Du måste ange ett heltal.")

def print_high_scores(scores):
    scores.sort(key=lambda x: x[1], reverse=True)

    print("\nTopplista:")
    for name, points in scores:
        print(f"{name}: {points}")

def main():
    scores = []

    while True:
        add_score(scores)
        cont = input("Vill du lägga till fler resultat? (j/n): ")

        if cont.lower() != "j":
            break

    print_high_scores(scores)

main()

Vad händer i programmet?

  • Listan scores innehåller tuples med namn och poäng.
  • sort() med lambda gör att listan sorteras efter poäng.
  • Funktioner används för att strukturera koden.

Utvidgning

  • Lägg till kontroll för dubbletter.
  • Lägg till möjlighet att spara listan till en fil.
  • Skapa ett alternativ för att ta bort en spelare.

Öva själv

  1. Skapa en variant av programmet där du lagrar inmatningar som dictionaries i stället för tuples.
  2. Lägg till ett val som bara visar de tre bästa resultaten.
  3. Gör programmet flerspråkigt genom att definiera meddelanden som en dictionary.

Reflektion

  • Vad gjorde listor till rätt val i detta program?
  • Hur hjälpte det att använda tuples i listan?
  • Vilka delar av programmet blev enklare tack vare funktioner?

Tillbaka till Kapitel 2