PIXEL ART


Fonctions

FONCTIONS

Introduction

Objectif

Intro

Intro

Le code est très long. Il faudrait trouver un moyen de le raccourcir.

Intro

Il faudrait pouvoir donner un nom à un bloc d'instruction et permettre de modifier à quelques endroit ses instructions.

Intro

Intro

Définition

On appelle fonction une partie de code recevant une ou plusieurs informations à partir desquelles elle retourne une ou plusieurs informations.

Les informations fournies à la fonction sont appelées paramètres ou arguments nommés de la fonction.

Les informations renvoyées par la fonction sont appelées des retours.

Intro

Différents types de fonctions

3 types de fonctions :

  • Simples (sans paramètres ni sorties) aussi appelées des procedures
  • Avec paramètres sans retour (procédures)
  • Avec retour

Créer un fonction

fonction simple

Simple

L'idée

On parle ici d'une fonction qui n'a pas de paramètre et ne renvoie rien.

Simple

Comment ça marche : création d'une fonction




def nom_fonction():
    bloc d'instructions    



Simple

Comment ça marche : création d'une fonction


def nom_fonction():
    bloc d'instructions    

  • le mot clé def permet de créer une fonction.
  • Les deux points : à la fin de la ligne de def sont obligatoires.
  • Les instructions d'une fonction sont indentés (comme pour for)

Simple

Comment ça marche : création d'une fonction


def nom_fonction():
    bloc d'instructions    

  • le mot clé def permet de créer une fonction.
  • Les deux points : à la fin de la ligne de def sont obligatoires.
  • Les instructions d'une fonction sont indentés (comme pour for)

Simple

Comment ça marche : création d'une fonction


def nom_fonction():
    bloc d'instructions    

  • le mot clé def permet de créer une fonction.
  • Les deux points : à la fin de la ligne de def sont obligatoires.
  • Les instructions d'une fonction sont indentées (comme pour for)

Simple

Comment ça marche : création d'une fonction


def nom_fonction():
    bloc d'instructions    

  • le mot clé def permet de créer une fonction.
  • Les deux points : à la fin de la ligne de def sont obligatoires.
  • Les instructions d'une fonction sont indentées (comme pour for)

Simple

Comment ça marche : création d'une fonction


def nom_fonction():
    bloc d'instructions    

  • La ligne def nom_fonction(): s'appelle l'entête de la fonction,
    Elle contient obligatoirement le mot clé def, le nom de la fonction, qui respecte les règles de nommage des variables et des parenthèses. Si nécessaire, les paramètres sont placés dans ces parenthèses.


  • Le bloc d'instructions est appelés le corps de la fonction. Il contient les instructions qui seront exécutées lors de l'appelle de la fonction.

Simple

Utilisation d'une fonction

Vous avez déjà utilisé des plusieurs fonctions : forward(), left(), begin_fill() et end_fill()


Remarques :

  • Pour utiliser une fonction, il faut qu'elle soit définie avant son utilisation. Par la suite, il suffit de la nommer
  • Il faut mettre les deux parenthèses () à la fin, même s'il n'y a rien dedans.
  • Une fonction n'a besoin d'être créée qu'une fois pour être utilisée autant de fois que nécessaire.

Simple

PIXEL


Création puis utilisation d'une fonction pixel qui affiche un pixel de 25 px.

FONCTIONS

Paramètres

Objectif

Paramètres

L'idée

Il est des fois nécessaire de modifier le comportement d'une fonction lors de son appel. (par exemple, si l'on veut par exemple changer la couleur des pixels lors d'un appel de la fonction pixel.)

Les paramètres sont là pour "paramétrer" / modifier le comportement de la fonction lors de son exécution.

Paramètres

Création d'une fonction avec paramètres




def nom_fonction():
  bloc d'instructions
  



Paramètres

Création d'une fonction avec paramètres

def nom_fonction(par1, par2):
    bloc d'instructions

Paramètres

Création d'une fonction avec paramètres

def nom_fonction(par1, par2):
    bloc d'instructions

Remarques :

  • Les paramètres d'une fonction sont placés entre parenthèses et séparés par des virgules s'il y en a plusieurs.

Paramètres

Création d'une fonction avec paramètres

def nom_fonction(par1, par2):
    bloc d'instructions

Remarques :

  • Les paramètres d'une fonction sont placés entre parenthèses et séparés par des virgules s'il y en a plusieurs.
  • Les instructions dans la fonctions utilisent les paramètres grâce à leurs noms donnés entre parenthèses.

Simple

PIXEL


Création puis utilisation d'une fonction pixel qui affiche un pixel de 25 px.

import turtle as tl
cote = 25 

def pixel():
    tl.fillcolor("red")
    tl.begin_fill()
    tl.forward(cote)
    tl.left(90)
    tl.forward(cote)
    tl.left(90)
    tl.forward(cote)
    tl.left(90)
    tl.forward(cote)
    tl.left(90)
    tl.forward(cote)
    tl.end_fill()
  

Simple

PIXEL


Création puis utilisation d'une fonction pixel qui affiche un pixel de 25 px.

import turtle as tl
cote = 25 

def pixel(couleur):
    tl.fillcolor(couleur)
    tl.begin_fill()
    tl.forward(cote)
    tl.left(90)
    tl.forward(cote)
    tl.left(90)
    tl.forward(cote)
    tl.left(90)
    tl.forward(cote)
    tl.left(90)
    tl.forward(cote)
    tl.end_fill()
  

Paramètres

Utilisation d'une fonction avec paramètres



Là encore, vous avez déjà utilisé des fonctions avec paramètres :
print("Bonjour")

Simple

PIXEL


Comment utiliser la fonction pixel pour obtenir un pixel vert de 30 pixels ?

Paramètres par défaut

Pour toujours plus de modularité, on peut ajouter un deuxième paramètre à la fonction pixel.
Le second paramètre est séparé du premier par une virgule.
# définition de la fonction
import turtle as tl
 
def pixel(couleur, cote):
    tl.fillcolor(couleur)
    tl.begin_fill()
    tl.forward(cote)
    tl.left(90)
    tl.forward(cote)
    tl.left(90)
    tl.forward(cote)
    tl.left(90)
    tl.forward(cote)
    tl.end_fill()

Paramètres par défaut

Dans la fonction pixel, le paramètre cote vaut dans la majeure partie des cas 25px.
C'est donc fastidieux de l'écrire à chaque fois.
On va donc lui donné une valeur par défaut.
Attention, les paramètres par défaut doivent toujours être à la fin de la liste des paramètres dans la déclaration de la fonction.

# définition de la fonction
import turtle as tl
 
def pixel(couleur, cote = 25):
    tl.fillcolor(couleur)
    tl.begin_fill()
    tl.forward(cote)
    tl.left(90)
    tl.forward(cote)
    tl.left(90)
    tl.forward(cote)
    tl.left(90)
    tl.forward(cote)
    tl.end_fill()


# utilisation la fonction

FONCTIONS

return

Objectif

return

L'idée

Toutes les fonctions ont des résultats (c'est leur buts) mais jusqu'à présent nous n'avons vu des résultats que dans le terminal ou dans la fenêtre de turtle.
Voyons à présent un type de fonction qui a des paramètres et renvoi des informations dans le programme qui l'a appelée à l'aide d'un return.

return

Création d'une fonction avec return




def nom_fonction(par1, par2):
    instructions
    return resultat



return

Création d'une fonction avec return

def nom_fonction(par1, par2):
    instructions
    return resultat

  • resultat peut-être une variable créée dans la fonction, une expression ou une valeur
  • return est un mot clé réservé au renvoi des résultats d'une fonction dans le programme ou elle a été appeler.
  • Attention Une fois la ligne du return exécutée, la fonction s'arrête et l'exécution continue dans le programme principal.

return

Création d'une fonction avec return

def nom_fonction(par1, par2):
    instructions
    return resultat

  • resultat peut-être une variable créée dans la fonction, une expression ou une valeur
  • return est un mot clé réservé au renvoi des résultats d'une fonction dans le programme ou elle a été appeler.
  • Une fois la ligne du return exécutée, la fonction s'arrête et l'exécution continue dans le programme principal.

return

Création d'une fonction avec return

def nom_fonction(par1, par2):
    instructions
    return resultat

Remarques :

  • resultat peut-être une variable créée dans la fonction, une expression ou une valeur
  • return est un mot clé réservé au renvoi des résultats d'une fonction dans le programme ou elle a été appeler.
  • Une fois la ligne du return exécutée, la fonction s'arrête et l'exécution continue dans le programme principal.

LISTE

Objectif :
Comment créer cette frise.

LISTE

L'idée

Comment enregistrer une liste de valeurs ?
Ex : les prénoms d'une classe, la température d'une pièce toute les minutes, ...
Variable normale : difficilement manipulable !
→ Un nouveau type de variable : les tableaux list

LISTE

Comment ça marche : créer une liste

Les tableau (list) en python


Créer une liste vide :
nom_liste = [   ]

Créer une liste déjà remplie :
nom_liste = [va0, va1, ...]

LISTE

Comment ça marche : créer une liste

Exemples :

entiers = [1, 2, 8, 78] # liste d'entiers
strings = ["slt", "bjr", "cc"] # liste de strings
mixte = [2, "dd", 2.5] # liste contenant plusieurs type de valeurs
liste_de_liste = [[12, 4], [5, 4, 3],[4]] # liste contenant des listes
liste_vide = [] # ou list()

LISTE

A retenir: créer une liste

En python, les tableaux sont contenus dans des crochets [ ... ]
Les éléments sont séparés par des virgules ,
[ élement1 , élement2 , élement3 ]

LISTE

Tableau vide


Il est possible de créer un tableau vide

# Créer un tableau vide
mon_tableau = []

Tableau non vide


Il est aussi possible de l'initialiser avec des valeurs

# Créer un tableau à partir de valeurs
>>> mon_tableau = ["Alan", "Ada", "Grace", "Ian"]
["Alan", "Ada", "Grace", "Ian"]

Tableau de valeurs identiques

Enfin si l'on veut, il est aussi possible de l'initialiser avec les mêmes valeurs

# Créer un tableau contenant 5 zéros
>>> mon_tableau = [0]*5
[0, 0 , 0, 0, 0]

LISTE

Comment ça marche : Accéder à un élément

Pour accéder à un élément, on utilise son index (sa position dans la liste)

L'index d'une liste commence à 0.

[\underbrace{\text{"Alan"}}_{0}, \underbrace{\text{"Ada"}}_{1}, \underbrace{\text{"Grace"}}_{2}, \underbrace{\text{"Ian"}}_{3}]

LISTE

Comment ça marche : Accéder à un élément

L'instruction pour accéder à un élément est construite à partir du nom du tableau et de l'index (la position) de l’élément souhaité entre crochets [].

LISTE

Comment ça marche : Accéder à un élément

Le tableau s'appelle mon_tableau et l'élément Ada est en position 1.

On accède donc à cet élément avec l'instruction

>>> mon_tableau = ["Alan", "Ada", "Grace", "Ian"]
>>> print(mon_tableau[1])
"Ada"

LISTE

Comment ça marche : Les index négatifs



Comment accéder aux derniers éléments d'un tableau ?


notes = [12, 14, 11, 16, 17, 15, 18, 15, 19]

LISTE

Comment ça marche : Les index négatifs



Pour atteindre le dernier élément d'un tableau, il faudrait connaître le nombre total d'éléments du tableau (en utilisant la fonction len) et lui soustraire 1.

LISTE

Comment ça marche : Les index négatifs




notes = [12, 14, 11, 16, 17, 15, 18, 15, 19]
nb_notes = len(notes)
print(notes[nb_notes - 1])


LISTE

Comment ça marche : Les index négatifs




notes = [12, 14, 11, 16, 17, 15, 18, 15, 19]
print( notes[len(notes) - 1])


LISTE

Comment ça marche : Les index négatifs




notes = [12, 14, 11, 16, 17, 15, 18, 15, 19]
print( notes[-1])


LISTE

Exercice 1

On considère le code suivant :

tab = ["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]
Que vaut tab[3] ?

LISTE

Exercice 2

Après l'affectation suivante :

alphabet = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
'M', 'N','O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ]
Quelle instruction permet d'accéder à la lettre E ?


Quelle instruction permet d'accéder à la lettre Y ?

LISTE

Modification d'un élément

LISTE

Comment ça marche : Modification d'un élément

Pour modifier la valeur d'un élément, il faut acceder à cet élément par son index et lui affecter une nouvelle valeur à l'aide du signe =.

nom_tableau[index ] = nouvelle valeur

LISTE

Comment ça marche : Modification d'un élément


Quel affichage résultera de l'éxécution du code ci-dessous ?

informaticiens= ["Alan", "Ada", "Grace", "Ian"]
informaticiens[1] = "Ada Lovelace"
print(informaticiens)

LISTE

Comment ça marche : Modification d'un élément


Quel affichage résultera de l'éxécution du code ci-dessous ?

informaticiens = ["Alan", "Ada", "Grace", "Ian"]
informaticiens[1] = "Ada Lovelace"
print(informaticiens)
["Alan", "Ada Lovelace", "Grace", "Ian"]

LISTE

Comment ça marche : Modification d'un élément

On considère le script suivant :

tab = [2, 8, 9, 2]
tab[2] = 4

Quelle est la valeur de tab à la fin de son exécution ?

LISTE

Comment ça marche : Modification d'un élément

On considère le script suivant :

tab = [2, 8, 9, 2]
tab[2] = tab[2] + 5

Quelle est la valeur de tab à la fin de son exécution ?

LISTE

Comment ça marche : Modification d'un élément

On considère le script suivant :

 
tab = [2, 8, 9, 2]
tab[3] = tab[1] + 5
tab[2] = tab[3] + 5

Quelle est la valeur de tab à la fin de son exécution ?

Ajouter des éléments

Méthodes

Il existe plusieurs façons d'ajouter des éléments à un tableau donné.
On peut :
  • ajouter un élement,
  • étendre un tableau à partir d'un second tableaux,
  • concatener 2 tableaux pour en former un troisième.

Ajouter un élément


Pour ajouter un seul élément, on utilise la méthode append. La méthode append modifie sur place l'objet tableau qui l'appelle.

mon_tableau = ["Alan", "Ada", "Grace", "Ian"]
mon_tableau.append("George")
print(mon_tableau)
["Alan", "Ada", "Grace", "Ian", "George"]

Etendre une liste


Pour ajouter un tableau d'élément, on utilise la méthode extend. La méthode extend modifie sur place l'objet tableau qui l'appelle.

mon_tableau = ["Alan", "Ada", "Grace", "Ian"]
tableau_2 = ["Charles", "Guido"]
mon_tableau.extend(tableau_2)
print(mon_tableau)
["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]

Ajout par concaténation


Il est aussi possible de concaténer 2 listes pour en créer une troisième à l'aide de l'instruction +.

tableau_1 = ["Alan", "Ada", "Grace", "Ian"]
tableau_2 = ["Charles", "Guido"]
mon_tableau = tableau_1 + tableau_2
print(mon_tableau)
["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]

Exercices

Qu'affiche le programme python suivant ?

tab1 = [3,2,2]
tab2 = [1,5,1]
tab1.append(tab2)
print(tab1)


Parcourir un tableau

Parcourir un tableau

Il existe deux manières de parcourir les éléments d'une liste :
  • Parcourir une liste à partir des index des éléments
  • Parcourir une liste par itération sur les éléments

Parcours à partir de l'index des éléments

En python, les tableaux (list) fonction taille len( ) donnant le nombre d'éléments contenus dans la liste.
Associer à la fonction range(), on obtient un itérable composé de tous les index des éléments de la liste.

Parcours à partir de l'index des éléments


mon_tableau = ["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]
for index in range(len(mon_tableau)):
print(mon_tableau[index])
Dans cet exemple, la longueur de mon_tableau est 6.
L'instruction range(len(mon_tableau)) va être successivement évaluée par range(6) puis par un itérable de longueur 6 qui contiendra les valeurs 0, 1, 2, 3, 4 et 5 qui seront succéssivement données à la variable index.

Itération des éléments

Comme pour tout les itérables, il est aussi possible de parcourir un tableau en itérant les éléments du tableau, avec les instructions

for v in iterable.

Exemple


mon_tableau = ["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]
for elmt in mon_tableau:
print(elmt)
Dans cet exemple, la variable elmt prendra successivement les valeurs contenues dans la variable mon_tableau, c'est à dire "Alan", "Ada", "Grace", "Ian".

remarque

Il est souvent utile de bien nommée la variable créée dans la boucle for. Ainsi pour le code précédent, il aurait été préférable d'écrire :


mon_tableau = ["Alan", "Ada", "Grace", "Ian", "Charles", "Guido"]
for informaticien in mon_tableau:
print(informaticien)

Exercice

On considère le code suivant :

def feed(t):
for i in range(len(t)):
    t[i] = t[i] + i
return t
Que renvoie l'instruction feed([12, 24, 32]) ?

LISTE

Comment ça marche : modifier un élément d'une liste

En python :

nom_liste[indice] = nouvelle_valeur

Exemples :

entiers = [1, 2, 8, 78] # liste d'entiers
entiers[1] = 14 # change la valeur à l'indice 1 par 14
print(entiers) # renvoie [1, 14, 8, 78]

LISTE

Comment ça marche : nombre d'éléments dans une liste

En python :

len(nom_liste)

Exemples :

entiers = [1, 2, 8, 78] # liste d'entiers
print(len(entiers)) # renvoie 4

LISTE

Comment ça marche : ajouter un élément dans une liste

Il existe différentes façons d'ajouter un élément dans une liste, en voici deux.
En python :

nom_liste.append(valeur)
nom_liste.insert(indice, valeur)

Exemples :

entiers = [1, 2, 8, 78] # liste d'entiers
entiers.append(22) # ajoute 22 à la fin de entiers
print(entiers) # renvoie [1, 2, 8, 78, 22]
entiers.insert(2,-12)
print(entiers) # renvoie [1, 2, -12, 8, 78, 22]

Remarques :

  • .append(valeur) permet d'ajouter une valeur à la fin de la liste.
  • .insert(indice, valeur) permet d'insérer une valeur à l'indice précisé comme premier paramètre.
  • Elles doivent être collés à la liste où l'on souhaite insérer une valeur.

LISTE

Comment ça marche : supprimer un élément dans une liste

Voici une première façon de supprimer un élément dans une liste.
En python :

nom_liste.pop(indice)

Exemples :

entiers = [1, 8, 2, 8, 78, 9] # liste d'entiers
val = entiers.pop() # supprime le dernier élément de entiers et le stocke dans val
print(val) # renvoie 9
print(entiers) # renvoie [1, 8, 2, 8, 78]
val = entiers.pop(3) # supprime la valeur de l'indice 2 et la retourne
print(val) # renvoie 8
print(entiers) # renvoie [1, 8, 2, 78]

Remarques :

  • .pop() supprime la dernière valeur et renvoie la valeur supprimée.
  • .pop(indice) supprime la valeur de l'indice donné et renvoie la valeur supprimée.
  • Elle doit être collé à la liste à laquelle on souhaite supprimer la valeur.

LISTE

Comment ça marche : supprimer un élément dans une liste

Voici une seconde façon de supprimer un élément dans une liste.
En python :

nom_liste.remove(valeur)

Exemple :

entiers = [1, 8, 2, 8, 78, 9] # liste d'entiers
entiers.remove(8) # supprime le premier 8
print(entiers) # renvoie [1, 2, 8, 78, 9]

Remarques :

  • .remove(valeur) supprime la première occurence de la valeur donné en paramètre.
  • Elle doit être collé à la liste à laquelle on souhaite supprimer la valeur.

LISTE

Exemple 1


Création d'une liste ma_liste contenant les valeurs 4, 6, 7, 12, 15, 22, -465.
Affichage d'une valeur par ligne

Exemple 2


Création d'une spirale dont les côtés ont les valeurs suivante : 5, 10, 15, 22, 25, 28, 35, 50, 100.