TP1 - Fonctions
- Se créer un dossier
Première NSIsur votre ordinateur ou clé USB. - Dans ce dossier, créer un dossier
Langage_Programmation.
Sur EduPython ou une autre instance Python :
- Créer un nouveau fichier en cliquant sur l'icône
📄, ou en appuyant surCTRL+N. - Enregistrer le fichier sous le nom
TP1_Fonctions.pyen cliquant sur l'icône💾, ou en appuyant surCTRL+S.
L'ensemble des exercices se fait en Python.
Pour chaque fonction écrite, vous devrez tester votre fonction dans le programme principal avec plusieurs valeurs afin de vérifier son fonctionnement.
Double
Écrire une fonction double(n) qui prend un nombre n en paramètre et retourne son double.
def double(n):
"""
Retourne le double de n.
"""
Exercices
- 1
Complétez la fonction
double. - 2
Testez votre fonction avec
5, puis avec12. - 3
Stockez le résultat de
double(20)dans une variableresultat, puis affichez cette variable.
Maximum
Écrire une fonction maximum(a, b) qui prend deux nombres a et b en paramètres et retourne le plus grand des deux.
Vous ne devez pas utiliser la fonction max() de Python.
def maximum(a, b):
"""
Retourne le plus grand nombre entre a et b.
"""
Exercices
- 1
Complétez la fonction
maximum. - 2
Testez votre fonction avec plusieurs valeurs.
- 3
Que doit retourner
maximum(12, 7)? - 4
Que doit retourner
maximum(-4, -9)?
Pair ou impair ?
Écrire une fonction est_pair(n) qui prend un entier n en paramètre.
La fonction doit retourner :
Truesinest pair ;Falsesinon.
def est_pair(n):
"""
Retourne True si n est pair, False sinon.
"""
Exercices
- 1
Complétez la fonction
est_pair. - 2
Testez votre fonction avec
8,13et42. - 3
Quel est le type de la valeur retournée par cette fonction ?
Puissance
Écrire une fonction puissance(a, n) qui retourne la valeur de .
Par exemple :
puissance(2, 5)
doit retourner :
32
Vous ne devez pas utiliser l'opérateur **.
Vous utiliserez une boucle pour effectuer les multiplications nécessaires.
def puissance(a, n):
"""
Retourne a à la puissance n.
"""
Exercices
- 1
Complétez la fonction
puissance. - 2
Vérifiez que
puissance(2, 5)retourne32. - 3
Vérifiez que
puissance(3, 3)retourne27. - 4
Quelle valeur doit être retournée par
puissance(7, 0)?
Fonctions et listes
Lors du précédent TP, vous avez écrit plusieurs algorithmes permettant de manipuler des listes.
Le problème est que ces programmes étaient écrits pour être exécutés directement.
Nous allons maintenant les transformer en fonctions réutilisables.
Somme d'une liste
Dans le précédent TP, vous avez déjà écrit un algorithme permettant de calculer la somme des valeurs d'une liste.
Nous allons maintenant rendre cet algorithme réutilisable.
Écrire une fonction somme(liste) qui prend une liste de nombres en paramètre et retourne la somme de ses éléments.
Vous ne devez pas utiliser la fonction sum() de Python.
def somme(liste):
"""
Retourne la somme des éléments de liste.
"""
Exercices
- 1
Complétez la fonction
somme. - 2
Testez-la avec :
somme([4, 7, 2]) - 3
Testez ensuite exactement la même fonction avec :
somme([10, 20, 30, 40]) - 4
Quel est l'intérêt d'avoir placé cet algorithme dans une fonction ?
Maximum d'une liste
Écrire une fonction maximum_liste(liste) qui retourne le plus grand élément d'une liste.
Vous ne devez pas utiliser la fonction max() de Python.
def maximum_liste(liste):
"""
Retourne le plus grand élément de liste.
"""
Exercices
- 1
Complétez la fonction.
- 2
Testez-la avec :
[4, 9, 2, 15, 7] - 3
Cette fonction donnerait-elle un résultat cohérent avec une liste composée de valeurs négatives ?
- 4
Essayer de la modifier pour qu'elle puisse prendre en compte ce cas.
Compter une valeur
Écrire une fonction compter(liste, valeur) qui retourne le nombre de fois où valeur apparaît dans liste.
Par exemple :
compter([4, 7, 4, 2, 4], 4)
doit retourner :
3
Vous ne devez pas utiliser la méthode count().
def compter(liste, valeur):
"""
Retourne le nombre d'apparitions de valeur dans liste.
"""
Exercices
- 1
Complétez la fonction
compter. - 2
Testez-la avec l'exemple précédent.
- 3
Testez :
compter([1, 2, 3, 4, 5], 8)Quelle valeur doit être retournée ?
Rechercher une valeur
Écrire une fonction contient(liste, valeur) qui retourne :
Truesivaleurest présente dansliste;Falsesinon.
def contient(liste, valeur):
"""
Retourne True si valeur appartient à liste, False sinon.
"""
Exercices
- 1
Complétez la fonction.
- 2
Testez :
contient([4, 8, 12, 16], 12) - 3
Testez :
contient([4, 8, 12, 16], 7) - 4
Quelle différence y a-t-il entre les fonctions
compteretcontient?
Construire une nouvelle liste
Une fonction peut également construire puis retourner une nouvelle liste.
Doubler les valeurs
Dans le précédent TP, vous avez déjà construit de nouvelles listes à partir des valeurs d'une autre liste.
Écrire une fonction doubles(liste) qui retourne une nouvelle liste contenant le double de chaque élément.
Par exemple :
doubles([2, 5, 8])
doit retourner :
[4, 10, 16]
def doubles(liste):
"""
Retourne une nouvelle liste contenant
le double des éléments de liste.
"""
Exercices
- 1
Complétez la fonction.
- 2
Testez-la avec
[2, 5, 8]. - 3
Testez-la avec une autre liste de votre choix.
- 4
Vérifiez que la liste donnée en paramètre n'a pas été modifiée.
Séparer pairs et impairs
Vous avez déjà réalisé un exercice similaire lors du précédent TP.
Écrire une fonction separer(liste) qui sépare les nombres pairs et impairs.
La fonction doit retourner une liste contenant deux listes :
[pairs, impairs]
Par exemple :
separer([4, 7, 2, 9, 8, 3])
doit retourner :
[[4, 2, 8], [7, 9, 3]]
def separer(liste):
"""
Retourne une liste contenant :
- la liste des nombres pairs ;
- la liste des nombres impairs.
"""
Exercices
- 1
Créez deux listes vides
pairsetimpairs. - 2
Parcourez la liste reçue en paramètre.
- 3
Ajoutez chaque valeur dans la bonne liste.
- 4
Retournez les deux listes sous la forme
[pairs, impairs]. - 5
Testez votre fonction avec plusieurs listes différentes.
Réutiliser nos fonctions
Nous avons maintenant créé plusieurs fonctions.
L'objectif n'est pas de les oublier une fois l'exercice terminé : nous pouvons réutiliser une fonction à l'intérieur d'une autre fonction.
Vous avez créé une fonction :
somme(liste)
capable de calculer la somme des éléments d'une liste.
Si nous avons besoin de cette somme dans un autre algorithme, il est inutile de refaire la boucle !
Nous pouvons simplement appeler notre fonction somme.
Moyenne
Écrire une fonction moyenne(liste) qui retourne la moyenne des nombres contenus dans une liste.
Votre fonction doit obligatoirement utiliser la fonction somme(liste) réalisée précédemment.
Vous ne devez donc pas recalculer vous-même la somme avec une nouvelle boucle.
def moyenne(liste):
"""
Retourne la moyenne des éléments de liste.
"""
Exercices
- 1
Complétez la fonction
moyenne. - 2
Testez-la avec :
moyenne([10, 12, 14]) - 3
Testez-la avec une autre liste.
Nombres supérieurs à une valeur
Écrire une fonction :
def superieurs(liste, seuil):
"""
Retourne une liste contenant les valeurs de liste supérieures à seuil.
"""
qui retourne une nouvelle liste contenant uniquement les valeurs strictement supérieures à seuil.
Par exemple :
superieurs([12, 7, 15, 9, 18, 4], 10)
doit retourner :
[12, 15, 18]
Exercices
- 1
Complétez la fonction.
- 2
Testez-la avec l'exemple précédent.
- 3
Utilisez votre fonction pour récupérer toutes les notes supérieures à
10dans :notes = [8, 12, 15, 7, 10, 18, 4, 13]
Petit bilan statistique
Nous souhaitons maintenant obtenir plusieurs informations sur une liste de notes.
Écrire une fonction :
def statistiques(notes):
"""
Retourne une liste contenant la moyenne des notes et la note maximale.
"""
qui retourne une liste contenant :
[moyenne, maximum]
Vous devez utiliser les fonctions :
moyenne()maximum_liste()
déjà écrites précédemment.
Vous ne devez pas réécrire les algorithmes correspondants.
Par exemple :
statistiques([12, 8, 15, 17, 10])
doit retourner :
[12.4, 17]
Exercices
- 1
Complétez la fonction
statistiques. - 2
Testez-la avec plusieurs listes.
- 3
Combien de lignes sont réellement nécessaires dans cette nouvelle fonction ?
- 4
Expliquez pourquoi la réutilisation de fonctions permet d'éviter de réécrire plusieurs fois le même code.
Défis
Les exercices suivants sont à réaliser lorsque les exercices précédents sont terminés.
Miroir
Écrire une fonction miroir(liste) qui retourne une nouvelle liste contenant les éléments dans l'ordre inverse.
Par exemple :
miroir([4, 8, 2, 7])
doit retourner :
[7, 2, 8, 4]
Vous ne devez pas utiliser :
reverse()
reversed()
ni :
liste[::-1]
def miroir(liste):
"""
Retourne une nouvelle liste contenant les
éléments de liste dans l'ordre inverse.
"""
Palindrome
Un palindrome est un mot qui peut être lu dans les deux sens.
Par exemple :
kayak
radar
ressasser
sont des palindromes.
Écrire une fonction :
def palindrome(mot):
"""
Retourne True si un mot est un palindrome False sinon.
"""
qui retourne :
Truesi le mot est un palindrome ;Falsesinon.
Vous devez utiliser la fonction miroir() du défi précédent.
Vous ne devez pas réécrire l'algorithme permettant d'inverser les éléments.
Une chaîne de caractères peut être transformée en liste :
list("kayak")
donne :
["k", "a", "y", "a", "k"]
Tout assembler
On considère les notes suivantes :
notes = [8, 12, 15, 7, 18, 10, 14, 5, 16]
Vous disposez maintenant des fonctions :
somme()
maximum_liste()
compter()
contient()
moyenne()
superieurs()
statistiques()
Exercices
Sans réécrire les algorithmes précédents, utilisez uniquement vos fonctions pour :
- 1
Afficher la moyenne de la classe.
- 2
Afficher la meilleure note.
- 3
Afficher le nombre de notes égales à
10. - 4
Indiquer si au moins un élève a obtenu
20. - 5
Créer une liste contenant uniquement les notes strictement supérieures à la moyenne.
Pour la dernière question, vous aurez besoin du résultat retourné par une première fonction pour appeler une seconde fonction.