Spring til indhold
12-15 år Begynder ⏱ 45-60 minutter

Skildpaddeløbet – lav et væddeløb med Python-turtle

Tegn en bane, sæt fire skildpadder på startlinjen, og lad tilfældige tal bestemme, hvem der vinder. Du lærer for-løkker, tilfældige tal og at styre flere skildpadder på én gang.

🏅 Lav et diplom
Illustration af en pokal

I dette projekt tegner du en væddeløbsbane med Pythons turtle-bibliotek. Så sætter du fire skildpadder på startlinjen og lader dem løbe. I hver tur går hver skildpadde mellem 1 og 5 skridt – helt tilfældigt. Ingen ved, hvem der vinder, før løbet er slut. Er I flere, kan I vælge hver jeres skildpadde og heppe.

Før du starter

Du kan bruge Raspberry Pi Code Editor, som er gratis og virker i browseren. Vælg Python, skriv koden, og klik på Run. Du kan kode uden konto og gemme projektet på din computer med knappen Download. Vil du gemme det online, skal du have en konto – og er du under 13 år, skal du have lov af en forælder til at oprette den. Du kan også bruge Thonny på din egen computer. Så løber skildpadderne i et nyt vindue.

Tegn banen

Turtle-biblioteket har en pen – en lille pil, der tegner en streg, når den flytter sig. Banen får tal hen over toppen og en lodret streg under hvert tal. I stedet for at skrive det samme 16 gange bruger du en for-løkke. range(16) giver tallene 0 til 15 – altså 16 tal.

penup() løfter pennen, så den ikke tegner på vej hen til øverste venstre hjørne. I løkken skriver pennen tallet og drejer 90 grader mod højre, så den peger nedad. Den går 10 skridt, sætter pennen ned og tegner en streg på 150 skridt. Så løfter den pennen, går 160 skridt tilbage, drejer mod venstre og går 20 skridt hen til det næste tal.

from turtle import *
from random import randint

# Banen: et tal og en lodret streg for hvert skridt
speed(0)
penup()
goto(-140, 140)
for skridt in range(16):
    write(skridt, align='center')
    right(90)
    forward(10)
    pendown()
    forward(150)
    penup()
    backward(160)
    left(90)
    forward(20)
hideturtle()

Kør programmet. Ser du tallene 0 til 15 med en streg under hvert tal? speed(0) får pennen til at tegne så hurtigt som muligt, og hideturtle() gemmer pilen, når banen er færdig. Den første linje henter turtle-biblioteket, og den anden henter randint, som du skal bruge til løbet.

Fire skildpadder

Turtle() laver en ny skildpadde. Hver skildpadde får en farve og formen turtle, så den ligner en skildpadde. Så løfter den pennen, går hen til startlinjen og sætter pennen ned igen. Nu tegner den et spor, når den løber. Skildpadderne står 30 skridt fra hinanden, så de ikke løber oven i hinanden. Skriv koden under banen.

# Fire skildpadder på startlinjen
alma = Turtle()
alma.color('red')
alma.shape('turtle')
alma.penup()
alma.goto(-160, 100)
alma.pendown()

bo = Turtle()
bo.color('blue')
bo.shape('turtle')
bo.penup()
bo.goto(-160, 70)
bo.pendown()

ella = Turtle()
ella.color('orange')
ella.shape('turtle')
ella.penup()
ella.goto(-160, 40)
ella.pendown()

karl = Turtle()
karl.color('green')
karl.shape('turtle')
karl.penup()
karl.goto(-160, 10)
karl.pendown()

💡 Du kan bruge mange engelske farvenavne, fx purple, pink, brown, turquoise eller gold. Husk anførselstegnene.

Opvarmning og løb

Før løbet snurrer skildpadderne en hel omgang: 36 gange 10 grader er 360 grader. To snurrer mod højre og to mod venstre. Bagefter peger de alle sammen mod højre igen, klar til at løbe.

Selve løbet er en løkke med 100 ture. I hver tur går hver skildpadde et tilfældigt antal skridt: randint(1, 5) giver et tal fra 1 til 5. Alle fire skal flytte sig inde i den samme løkke, så de skiftes til at gå.

# Opvarmning: alle snurrer en hel omgang
for drej in range(36):
    alma.right(10)
    bo.left(10)
    ella.right(10)
    karl.left(10)

# Løbet: 100 ture, hvor hver skildpadde går 1-5 skridt
for tur in range(100):
    alma.forward(randint(1, 5))
    bo.forward(randint(1, 5))
    ella.forward(randint(1, 5))
    karl.forward(randint(1, 5))

Hvem vandt?

Den skildpadde, der er nået længst til højre efter 100 ture, har vundet. xcor() fortæller, hvor langt til højre en skildpadde står. Programmet lægger skildpadderne i en ordbog (dictionary) med deres navne og går dem igennem én ad gangen. Står en skildpadde længere til højre end den, der fører, bliver den den nye vinder. Til sidst skriver pennen vinderens navn under banen.

# Hvem kom længst?
skildpadder = {'Alma': alma, 'Bo': bo, 'Ella': ella, 'Karl': karl}
vinder = 'Alma'
for navn in skildpadder:
    if skildpadder[navn].xcor() > skildpadder[vinder].xcor():
        vinder = navn

goto(0, -60)
write(vinder + ' vandt!', align='center', font=('Arial', 24, 'bold'))
done()

Kør programmet flere gange. Vinderen skifter, fordi tallene er tilfældige. Står to skildpadder præcis lige langt, vinder den, der står først i ordbogen.

💡 Sæt de fire stykker kode efter hinanden i den rækkefølge, de står her. done() skal stå allersidst. I Thonny holder den vinduet åbent, til du lukker det.

Kan du lide tilfældige tal? Så prøv Simulér fødselsdagsparadokset med Python. Vil du lære mere Python, så tag forløbet Python for begyndere.

🧠 Udfordring – prøv selv

Lad spillerne gætte vinderen, før løbet starter. Brug input() til at spørge "Hvem tror du vinder?", og gem svaret i en variabel. Når løbet er slut, skal programmet skrive, om man gættede rigtigt. Tip: Navnene i ordbogen starter med stort bogstav. Ekstra udfordring: Gør stregerne på banen stiplede med en løkke inde i løkken.

Se dit kodepas →

Fluebenet gemmes kun i din browser og samler stempler i dit kodepas.

👩‍🏫 Til læreren – brug projektet i undervisningen
Fag
Matematik, Teknologiforståelse (valgfag fra 2027/28)
Klassetrin
6.–9. klasse
Tid
2 lektioner à 45 min
Teknologiforståelse
Computationel tankegang, Teknologisk handleevne

Læringsmål

  • Eleverne kan bruge en for-løkke til at gentage en handling et bestemt antal gange.
  • Eleverne kan bruge randint til at lave tilfældige tal og forklare, hvorfor vinderen skifter.
  • Eleverne kan bruge koordinater og vinkler til at tegne og flytte figurer med turtle.
  • Eleverne kan finde den største værdi i en samling ved at gå den igennem én ad gangen.

Forberedelse og materialer

  • En computer med browser pr. elev eller pr. makkerpar. Tablets er ikke velegnede til at skrive Python.
  • Afprøv editor.raspberrypi.org på skolens netværk (eller installér Thonny), og lav selv projektet én gang.
  • Eleverne kan kode uden konto og gemme med Download. Vil I gemme online, kræver Code Editor en konto, og elever under 13 år skal have forældrenes lov til at oprette den.
  • Gennemgå kort indrykning i Python: koden inde i en løkke skal rykkes ind.

Forslag til forløb

  • Opvarmning (10 min): Hvad er tilfældighed? Slå med en terning et par gange, og tal om, hvordan et program kan "slå med terning".
  • Banen (20 min): Eleverne tegner banen med en for-løkke og tal langs stregerne.
  • Skildpadderne (20 min): Eleverne laver fire skildpadder i hver sin farve og stiller dem på startlinjen.
  • Løbet og vinderen (25 min): Eleverne laver opvarmningen, løbet med randint og koden, der finder vinderen. Kør løbet flere gange.
  • Opsamling (15 min): Hvor mange gange vandt hver farve i klassen? Tal om, hvorfor det ikke altid er den samme, og hvor løkkerne er i koden.

Differentiering

  • Hvis det går hurtigt: Eleverne lader spilleren gætte vinderen med input() eller laver stiplede streger med en løkke inde i en løkke (projektets udfordringer).
  • Hvis det driller: Lad eleverne starte med to skildpadder i stedet for fire. Brug fejlbeskederne som hjælp, og tjek indrykningen først.

Spørgsmål til samtale

  • Er løbet fair? Hvordan kunne I ændre koden, så én skildpadde havde en fordel – og ville man kunne se det?
  • Hvor bruger spil og apps tilfældighed, fx i lootbokse eller kortspil? Hvordan påvirker det spilleren?
  • Hvis I kørte løbet 1000 gange, hvor ofte ville hver skildpadde så vinde? Hvordan kunne I undersøge det med kode?

Lærerarket er vejledende og skrevet af CodingKids. Se også EMU's materialer om teknologiforståelse.

Oversat og bearbejdet af CodingKids efter et projekt fra Raspberry Pi Foundation. Ændret: dansk tekst, fire skildpadder med danske navne, opvarmningen (en udfordring i originalen) er med i koden, og programmet finder og skriver vinderen. Original: Turtle Race!. Denne side deles under licensen CC BY-SA 4.0.