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
scoresinnehåller tuples med namn och poäng. sort()medlambdagö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
- Skapa en variant av programmet där du lagrar inmatningar som dictionaries i stället för tuples.
- Lägg till ett val som bara visar de tre bästa resultaten.
- 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?