Ateliers nomades #Python 02

Les fonctions

 

 

Au programme

Le cours

Ne pas hésiter à copier les bouts de code du cours dans un fichier sur trinket afin de tester le code avant les exercices.

Les fonctions

Lorsque l’on installe l’interpréteur Python, un ensemble de programmes et d’objets va être installé de base avec ce que l’on appelle la librairie standard ou module standard.

On va trouver dans cette librairie des fonctions dites natives (built-in).

On en a vu quelques unes de ces fonctions natives :

  • print() : Fonction qui permet d’afficher de l’information sur l’écran 
  • type()  : Fonction qui permet de connaître le type d’une donnée
  • int()     : Fonction qui permet de convertir un objet de type str (qui représente un nombre) ou un objet de type float en un objet de type entier
  • float()  : Fonction qui permet de convertir un objet de type str (qui représente un nombre) ou un objet de type int en un objet de type float.
  • str()     : Fonction qui permet de convertir un objet de type float ou un objet de type entier en un objet de type str.
  • input() : Fonction qui permet de récupérer ce que l’on tape au clavier

Pour votre curiosité, vous pouvez trouver sur la La documentation Python (en anglais) d’autres fonctions natives :

Vous pouvez la voir ici

Une fonction est une suite d’instruction qui a un nom. 

Imaginez que derrière toutes les fonctions ci-dessus, il y a une centaine de lignes de code (d’instruction).

Le but de la fonction est de ne pas à avoir à écrire ces lignes de codes mais uniquement d’écrire le nom de la fonction.

Créer sa fonction

Voici comment l’on écrit une fonction :

 def nom_de_la_fonction(arguments):

    instruction 1

    instruction 2

    etc

Ce qui suis va être du chinois, mais tout sera plus clair juste après.

Pour créer une fonction, il nous faut : 

  • utiliser le mot clé def, qui permet de définir la fonction.
  • le nom_de_la_fonction, afin de pouvoir utiliser la fonction plus tard dans notre code. 
  • les parenthèses () avec un l’intérieur des arguments ou non. Les arguments sont les données que l’on « à manger » à la fonction. 
  • le mot clé : qui donne le point de départ des instructions qui composent la fonction 
  • la liste d’instructions qui compose la fonction. Attention ! Il faut décaler de 4 espaces sur la droite chaque instructions que l’on veut mettre dans la fonction. 

Voyons tout cela à travers un premier exemple :

Voici le code de la fonction bonjour() qui écrit à l’écran le mot Bonjour

def bonjour():
print("Bonjour")
bonjour() >>> Bonjour

Comme on le voit j’ai définit la fonction bonjour() qui ne prend pas d’arguments et qui a comme instruction d’afficher à l’écran « Bonjour ».

On appelle la fonction en l’appelant tout simplement par son nom. 

On peut améliorer cette fonction en la faisant dire bonjour à une personne en particulier. Et pour cela on peut lui donner un argument à « manger ».

Voyons l’exemple suivant :

def super_bonjour(prenom):
print("Bonjour", prenom)
super_bonjour("Grégoire") >>> Bonjour Grégoire

Dans l’exemple précédent la fonction super_bonjour() prend un argument que j’ai nommé prenom. 

J’appelle la fonction en lui donnant en paramètre le prénom Grégoire.

super_bonjour(9)
>>> Bonjour 9

On peut donner à la fonction les valeurs « valides » que l’on souhaite. Mais cela n’a pas forcément de cohérence.

mon_prenom = "Denis"
super_bonjour(mon_prenom)
>>> Bonjour Denis

Par contre, il faut faire attention. Si on définit une fonction avec des arguments on doit appeler la fonction en lui donnant les paramètres qu’elle s’attend à avoir.

super_bonjour()
>>> TypeError: super_bonjour() takes exactly 1 arguments (0 given) 

L’interpréteur Python est assez cool et nous donne quand il le peut les informations sur où se trouve nos erreurs. Mais il le fait en anglais :).

On peut donner autant de arguments que l’on veut dans la définition de notre fonction.

def hyper_bonjour(prenom, age):
print("Bonjour", prenom)
print("Tu as ", age, "ans")
age_dans_un_an = age + 1
print("Dans un an, tu auras ", age_dans_un_an, "ans")
super_bonjour("Grégoire", 6) >>> Bonjour Grégoire
>>> Tu as 6 ans
>>> Dans un an, tu auras 7 ans

Comme on peut le voir. On peut définir des variables à l’intérieur de nos fonctions et y mettre autant d’instruction que l’on souhaite.

Règles et convention de nommage

Certaines règles s’appliquent lorsque l’on veut nommer une fonction. Ces mêmes règles s’appliquent au nommage d’une variable.

Ces règles sont :

  • Ne pas utiliser des mots clés réservés à Python comme par exemple else, if, print, input. Vous pouvez trouver la liste de ces mots réservés via le lien suivant : ici.  (Pas besoin de les connaître par coeur. L’interpréteur vous le dira si vous utilisez un mot réservé.)
  • Ne pas commencer le nom d’une variable ou d’une fonction par un nombre.

Certaines convention de nommage existe entre les développeurs :

  • Donner un nom le plus explicite et clair à une fonction ou variable. Cela permet de savoir directement son utilisation. Et cela même si le nom doit être long. Pas trop long, bien sûr ^^.
  • Si la variable ou la fonction doit comporter plusieurs mots on le choix entre deux possibilités :
    • la convention snake_case, c’est à dire en en séparant les mots par le caractère « _ ». Exemple : hyper_bonjour()
    • la convention CamelCase, c’est à dire en séparant les mots par un passage en haut de casse (lettre majuscule). Exemple : HyperBonjour()

Le mot clé return

Les fonctions ne servent pas uniquement à afficher des informations à l’écran.

On peut s’en servir pour effectuer des instructions que l’on peut renvoyer. Ce que l’on renvoie on peut l’utiliser dans une variable pour le réutiliser à notre guise. 

Le mot clé return nous permet de faire cela.

Voila un exemple de fonction utilisant return dans un contexte qui nous est familier.

 def age_dans_un_an(age):
    age_dans_un_ans = age + 1
    return age_dans_un_ans

def majuscule(phrase):
    phrase = phrase.capitalize()
    return phrase

prenom = input(« Bonjour. Comment t’appelles-tu »)

prenom = majuscule(prenom)

print(« Bonjour », prenom)
age = input(« Quel âge as tu ? « )

age = int(age)

print(« Tu as « , age, « ans »)
prochain_age = age_dans_un_an(age)

print(« Dans un an, tu auras », prochain_age, « ans »)

Essayez de comprendre ce que fait le programme. Puis copie le dans un trinket et joue le pour voir si vous aviez raison.

Les exercices

Pour chaque exercice, il vous faudra ouvrir un projet trinket et nommer ce projet par le nom de l’exercice.
Exemple pour l’exercice #Hacking I, le nom du projet sera Hacking I.
Pour chaque exercice, il vous faudra ouvrir un projet trinket et nommer ce projet par le nom de l’exercice.
Si vous êtes bloqué(e), ne pas hésitez à demander de l’aide au hackeur ou à la hackeuse à côté de vous.
Demandez moi en dernier 🙂 ! 

#Welcome

Écrire une fonction qui s’appellera welcome() et qui prend en argument name.
La fonction doit répondre lorsque l’on appelle « Hello name » avec bien sûr name qui prend la valeur que l’on lui donne.
Il faudra que le test suivant fonctonne.  

welcome(« Wesh ») 

>>> Bonjour Wesh

#Opérations

Écrire les fonctions suivantes :
 
– additionner() qui prend en argument nombre1, nombre2 et qui renvoie le résultat de l’addition des deux nombres
– soustraire() qui prend en argument nombre1, nombre2 et qui renvoie le résultat de la soustraction des deux nombres
– multiplier() qui prend en argument nombre1, nombre2 et qui renvoiele résultat de la multiplication des deux nombres
– diviser() qui prend en argument nombre1, nombre2 et qui renvoiele résultat de la division des deux nombres
 
Essayer vos fonctions avec les nombres de votre choix. 
 
Exemple : 

additionner(10, 8)

>>> 18

soustraire(10, 8)

>>> 2

multiplier(10, 8)

>>> 80

diviser(10, 8)

>>> 1.25

#Calculatrice

Écrire un programme qui simule une calculatrice. 
 
Le programme demande à l’utilisateur un premier nombre, puis un second nombre puis affiche le résultat des opérations suivantes entre ces deux nombres : 
 
– addition
– soustraction
– multiplication
– division 
  
 Exemple

>>> « Entrez un premier nombre »

>>> « Votre premier nombre est 8 »

>>> « Entrez un second nombre »

>>> « Votre second nombre est 10 »

>>> « Le résultat de l’addition est 18 »

etc, etc

 

Mentions Légales

CGVU

06.17.75.36.61

christophe@leprofnomade.fr

© 2019 LeProfNomade