In questa lezione impari a
- muovere la tartaruga e disegnare forme
- controllare penna, spessore e colori
- usare i cicli per disegnare in meno righe
- usare le liste per descrivere un disegno
Il modulo turtle ti dà una tartaruga che si muove su un foglio e lascia una scia dove passa. È un modo divertente per vedere subito il risultato del codice e per esercitarsi con cicli e liste.
Turtle apre una finestra grafica, quindi serve Python installato sul computer: gli editor online di solito non la supportano.
Il foglio e la tartaruga
import turtle
t = turtle.Turtle()
t.shape("turtle")
t.forward(100) # avanti di 100 passi
t.left(90) # gira a sinistra di 90 gradi
t.forward(100)
turtle.done() # tiene aperta la finestra
La tartaruga parte dal centro del foglio, che ha coordinate (0, 0), guardando verso destra.
I comandi principali
| Comando | Cosa fa |
|---|---|
forward(n) / backward(n) |
avanti / indietro di n passi |
left(g) / right(g) |
gira a sinistra / destra di g gradi |
goto(x, y) |
va al punto (x, y) |
penup() / pendown() |
alza / abbassa la penna (si muove senza disegnare) |
pensize(n) |
spessore della linea |
color("red") |
colore della penna |
circle(r) |
disegna un cerchio di raggio r |
dot(d, "blue") |
disegna un pallino pieno |
begin_fill() / end_fill() |
riempie la forma disegnata in mezzo |
speed(0) |
velocità massima |
Il quadrato, prima e dopo il ciclo
Senza ciclo servono 8 righe:
t.forward(100)
t.left(90)
t.forward(100)
t.left(90)
t.forward(100)
t.left(90)
t.forward(100)
t.left(90)
Con il ciclo bastano 3 righe, e cambiando un numero ottieni altre figure:
for i in range(4):
t.forward(100)
t.left(90)
Per un poligono con n lati, l'angolo da girare è 360 / n.
Colori e riempimenti
import turtle
t = turtle.Turtle()
t.color("darkgreen", "lightgreen") # colore del bordo e del riempimento
t.begin_fill()
for i in range(6):
t.forward(80)
t.left(60)
t.end_fill()
turtle.done()
Disegnare con le liste
Una lista di colori, scorsa con il for, rende i disegni molto più ricchi:
import turtle
t = turtle.Turtle()
t.speed(0)
colori = ["red", "orange", "yellow", "green", "blue", "purple"]
for i in range(36):
t.color(colori[i % len(colori)])
t.circle(80)
t.left(10)
turtle.done()
i % len(colori) fa ripartire i colori dall'inizio quando sono finiti.
Esercizi
Esercizio 1 – Il poligono a scelta. Chiedi all'utente il numero di lati e disegna il poligono regolare corrispondente.
Mostra la soluzione
import turtle
lati = int(input("Quanti lati? "))
t = turtle.Turtle()
for i in range(lati):
t.forward(80)
t.left(360 / lati)
turtle.done()
Esercizio 2 – La stella. Disegna una stella a cinque punte riempita di giallo. Suggerimento: l'angolo da girare è 144 gradi.
Mostra la soluzione
import turtle
t = turtle.Turtle()
t.color("orange", "yellow")
t.begin_fill()
for i in range(5):
t.forward(150)
t.right(144)
t.end_fill()
turtle.done()
Esercizio 3 – La casetta. Disegna una casa: un quadrato per i muri, un triangolo per il tetto e un rettangolo per la porta, ciascuno con il suo colore.
Mostra la soluzione
import turtle
t = turtle.Turtle()
t.speed(0)
def rettangolo(x, y, larghezza, altezza, colore):
t.penup()
t.goto(x, y)
t.pendown()
t.color("black", colore)
t.begin_fill()
for i in range(2):
t.forward(larghezza)
t.left(90)
t.forward(altezza)
t.left(90)
t.end_fill()
rettangolo(-100, -100, 200, 200, "beige") # muri
rettangolo(-25, -100, 50, 90, "brown") # porta
# tetto
t.penup()
t.goto(-120, 100)
t.pendown()
t.color("black", "firebrick")
t.begin_fill()
t.goto(0, 200)
t.goto(120, 100)
t.goto(-120, 100)
t.end_fill()
turtle.done()
Qui compare def, che serve a creare una funzione: ne parliamo nella prossima lezione. Intanto nota quanto codice si risparmia disegnando muri e porta con la stessa funzione.
Sfida
Disegna un fiore arcobaleno: sei petali (cerchi) di colori diversi presi da una lista, con un pallino giallo al centro.