Fonctions - Correction module Turtle
Fonction carré
Appel de la fonction
La fonction ne renvoie aucun résultat, donc pas la peine de stocker ce dernier dans une variable ou de l'afficher :
from turtle import *
t = Turtle()
def carre():
t.down()
for i in range(4):
t.right(90)
t.forward(50)
t.up()
done()
carre() # appel de la fonction
Paramètre longueur
from turtle import *
t = Turtle()
def carre(longueur):
t.down()
for i in range(4):
t.right(90)
t.forward(longueur) # instruction qui trace un côté
t.up()
done()
carre(60) # appel de la fonction avec un argument de longueur quelconque
Paramètres longueur et angle de rotation
Il faut faire tourner la tortue avant de tracer le carré, donc avant la boucle for...in...
de la fonction :
from turtle import *
t = Turtle()
def carre(longueur, angle):
t.down()
t.right(angle)
for i in range(4):
t.right(90)
t.forward(longueur) # instruction qui trace un côté
t.left(angle) # pour réinitialiser la tortue dans la "bonne" direction
t.up()
done()
carre(60, 35) # appel de la fonction avec un argument de longueur quelconque
Tracé de figures variées
Par la suite, on ne modifie plus la fonction : le programme principal doit appeler "correctement" la fonction, en lui passant les "bons" arguments, de façon à obtenir la figure recherchée.
from turtle import *
t = Turtle()
t.speed(0) # permet d'accélérer le tracé !
# DEFINITION DE LA FONCTION
def carre(longueur, angle):
t.down()
t.right(angle)
for i in range(4):
t.right(90)
t.forward(longueur) # instruction qui trace un côté
t.left(angle) # pour réinitialiser la tortue dans la "bonne" direction
t.up()
done()
# PROGRAMME PRINCIPAL
# Figure 1
for angle in range(0, 360, 18):
carre(100, angle) # appel de la fonction avec un argument d'angle incrémenté de 18° à chaque tour de boucle
t.reset() # efface le dessin
t.speed(0)
# Figure 2
l = 10 # longueur du côté initialisé à 10 pixels
for angle in range(0, 360, 18):
carre(l, angle) # appel de la fonction avec un argument d'angle incrémenté de 18°
l = l + 20 # et de longueur aussi incrémentée à chaque tour de boucle
t.reset() # efface le dessin
t.speed(0)
# Figure 3
for colonne in range(5): # 5 lignes
for ligne in range(5) : # 5 colonnes
carre(50, 0)
t.forward(60) # on se décale vers la droite après chaque carré de la ligne
t.backward(300) # en fin de ligne, on revient au début,
t.right(90) # on tourne à droite,
t.forward(60) # on avance de 60 pixels,
t.left(90) # on tourne de 90° vers la gauche pour remettre la tortue dans la "bonne" direction
Fonction étoile
Appel et analyse de la fonction
Pour 3 branches : 180 - 60 = 180 - 180 / 3, donc pour n branches ( n impair ) : 180 - 180/n
from turtle import *
t = Turtle()
# DÉFINITION DE LA FONCTION
def etoile(n):
t.down()
for i in range(n):
t.forward(100)
t.right(180 - 180/n)
t.up()
done()
etoile(5)
Ciel étoilé
Voir la documentation du module Turtle !
from turtle import *
from random import randint
t = Turtle()
t.speed(0)
# DÉFINITION DE LA FONCTION
def etoile(a, n): # a = longueur des branches, n = nombre de branches
t.down()
for i in range(n):
t.forward(a)
t.right(180 - 180/n)
t.up()
done()
# PROGRAMME PRINCIPAL
for i in range(20):
a = randint(10,100) # taille de l'étoile au hasard
n = 7 # étoiles à 7 branches
x = randint(-200,200) # position au hasard
y = randint(-200,200)
t.goto(x,y) # déplacement de la tortue vers la position
etoile(a, n)
Fonction étincelle
from turtle import *
t = Turtle()
# DÉFINITION DE LA FONCTION
def etincelle(longueur, n): # longueur = longueur des branches, n = nombre de branches
for i in range(n):
t.down()
t.right(360/n) # la tortue tourne de 360/n ° à chaque tour de boucle
t.forward(longueur)
t.up()
t.backward(longueur)
done()
etincelle(50, 10)