Hopp til innhold
Jørgensen & Dahl forlag

Forside / Artikler / Geometri · Ungdomsskolen

Python turtle – tegn kvadrat, trekant og mangekanter

Med Python turtle kan du se hvordan koden blir til en tegning. Her lager du et kvadrat, en likesidet trekant og andre regulære mangekanter. Underveis utforsker du løkker og forskjellen mellom figurens innvendige vinkel og vinkelen skilpadden snur.

Du trenger ikke å ha brukt turtle før. Det er en fordel å kjenne til en enkel for-løkke. Er det nytt, start med de tre nybegynneroppgavene i Python.

Endre koden og trykk Kjør. Kjøringen skjer i nettleseren din. Første oppstart og import av store biblioteker krever internett og kan ta litt tid. Python hentes fra jsDelivr. Koden sendes ikke til forlaget av editoren; kode du selv skriver kan likevel gjøre nettverkskall. Artiklene bruker ikke input(). Endringer her er midlertidige: åpne i Pythonverkstedet for å lagre eller laste ned.

Slik beveger skilpadden seg

import turtle henter tegnemodulen. turtle.forward(100) flytter skilpadden 100 tegneenheter fremover. turtle.left(90) dreier den 90 grader mot venstre, uten å flytte den. Pennen tegner mens skilpadden går. Den starter midt i tegnefeltet og peker mot høyre.

Eksemplene her bruker nettleserversjonen av turtle fra Pythonverkstedet. Den støtter vanlig geometri, men ikke hele skrivebordsversjonen med Tkinter, tastaturhendelser og egne bildefiler. speed(0) betyr at vi ønsker tegningen uten bevisst forsinkelse.

1. Tegn et kvadrat

Et kvadrat har fire like sider. Etter hver side snur skilpadden en kvart omdreining. Fire dreininger på 90 grader blir til sammen 360 grader, og skilpadden ender med samme retning som da den startet.

Et kvadrat med sidelengde 100
import turtle

turtle.speed(0)
turtle.pensize(3)
turtle.color("#1b365d")

for side in range(4):
    turtle.forward(100)
    turtle.left(90)

turtle.done()
Åpne i Pythonverkstedet ↗
Aktiver JavaScript for å kjøre koden her. Du kan også kopiere koden.

Du skal se et lukket kvadrat. range(4) gjentar innholdet fire ganger. done() lar tegningen stå; i nettleseren vises den i resultatfeltet.

Prøv selv

Endre sidelengden til 150. Blir omkretsen og arealet 1,5 ganger så store begge to?

Se et løsningsforslag

Omkretsen blir 600 i stedet for 400 tegneenheter: 1,5 ganger så stor. Arealet blir 22 500 i stedet for 10 000 kvadratenheter: 2,25 ganger så stort. Figuren forstørres i begge retninger.

2. Hvorfor snur vi 120 grader?

En likesidet trekant har innvendige vinkler på 60 grader. Men skilpadden skal dreie fra retningen den nettopp gikk i. Dreievinkelen er derfor 180 − 60 = 120 grader, ikke 60. Tre slike dreininger gir én hel omdreining.

En likesidet trekant
import turtle

turtle.speed(0)
turtle.pensize(3)
turtle.color("#b14a24")

for side in range(3):
    turtle.forward(140)
    turtle.left(120)

turtle.done()
Åpne i Pythonverkstedet ↗
Aktiver JavaScript for å kjøre koden her. Du kan også kopiere koden.
Prøv selv

Gjett hva som skjer hvis du bytter 120 med 60, men fortsatt bare gjentar tre ganger. Prøv deretter seks gjentakelser.

Se et løsningsforslag

Tre dreininger på 60 grader gir bare 180 graders samlet dreining, og de tre sidene lukker ikke figuren. Seks like sider med 60 graders dreining gir en regulær sekskant.

3. Tegn en regulær mangekant

En regulær mangekant har like sider og like vinkler. Når vi går én gang rundt kanten, dreier vi til sammen 360 grader. For en regulær mangekant med n sider blir hver dreievinkel 360 / n. Den innvendige vinkelen blir 180 − 360 / n.

Endre antall sider
import turtle

antall_sider = 5
sidelengde = 90
vinkel = 360 / antall_sider

turtle.speed(0)
turtle.pensize(3)
turtle.color("#1b365d", "#e6eef8")
turtle.begin_fill()
for side in range(antall_sider):
    turtle.forward(sidelengde)
    turtle.left(vinkel)
turtle.end_fill()

print("Dreievinkel:", vinkel, "grader")
turtle.done()
Åpne i Pythonverkstedet ↗
Aktiver JavaScript for å kjøre koden her. Du kan også kopiere koden.

Startkoden gir en femkant og skriver Dreievinkel: 72.0 grader. Bruk et heltall på minst 3 for antall sider. Prøv først 3, 4, 5, 6 og 8; reduser sidelengden hvis figuren blir større enn tegnefeltet.

Prøv selv

Hva er dreievinkelen og den innvendige vinkelen i en regulær åttekant?

Se et løsningsforslag

Dreievinkelen er 360 / 8 = 45 grader. Den innvendige vinkelen er 180 − 45 = 135 grader. Sett antall_sider = 8 og gjerne sidelengde = 60.

4. Lag et geometrisk mønster

En løkke kan ligge inne i en annen løkke. Den indre løkken tegner ett kvadrat. Den ytre gjentar hele kvadratet, med en liten dreining mellom hver gang.

Tolv kvadrater rundt samme hjørne
import turtle

turtle.speed(0)
turtle.color("#1b365d")

for figur in range(12):
    for side in range(4):
        turtle.forward(90)
        turtle.left(90)
    turtle.left(30)

turtle.hideturtle()
turtle.done()
Åpne i Pythonverkstedet ↗
Aktiver JavaScript for å kjøre koden her. Du kan også kopiere koden.

Tolv dreininger på 30 grader fordeler kvadratene over en hel omdreining. Noen linjer overlapper. Vil du gjenta 18 ganger, kan du bruke 20 grader mellom figurene. Be elevene forklare hvorfor antall gjentakelser og dreievinkelen henger sammen.

Hvis tegningen blir uventet, kontroller først innrykket og deretter hvilken vinkel som brukes. Knappen Stopp avbryter kjøringen. Vil du ha flere oppgaver med gradvis progresjon, kan du lese om Kaares kokebok for ungdomsskolen og Vg1.

Dokumentasjon og videre lesing

Oppgavene er laget for denne nettsiden og er ikke bokutdrag. For tekniske detaljer, se: