Forside / Artikler / Geometri · Ungdomsskolen
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.
import turtle
turtle.speed(0)
turtle.pensize(3)
turtle.color("#1b365d")
for side in range(4):
turtle.forward(100)
turtle.left(90)
turtle.done()
Du skal se et lukket kvadrat. range(4) gjentar innholdet fire ganger. done() lar tegningen stå; i nettleseren vises den i resultatfeltet.
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.
import turtle
turtle.speed(0)
turtle.pensize(3)
turtle.color("#b14a24")
for side in range(3):
turtle.forward(140)
turtle.left(120)
turtle.done()
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.
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()
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.
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.
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()
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: