Aller au contenu principal

TP1 - Fonctions

Au préalable
  1. Se créer un dossier Première NSI sur votre ordinateur ou clé USB.
  2. Dans ce dossier, créer un dossier Langage_Programmation.

Sur EduPython ou une autre instance Python :

  1. Créer un nouveau fichier en cliquant sur l'icône 📄, ou en appuyant sur CTRL + N.
  2. Enregistrer le fichier sous le nom TP1_Fonctions.py en cliquant sur l'icône 💾, ou en appuyant sur CTRL + S.
TP

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.
"""
ExercicesTout déplier
  1. 1

    Complétez la fonction double.

  2. 2

    Testez votre fonction avec 5, puis avec 12.

  3. 3

    Stockez le résultat de double(20) dans une variable resultat, 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.

Interdiction

Vous ne devez pas utiliser la fonction max() de Python.

def maximum(a, b):
"""
Retourne le plus grand nombre entre a et b.
"""
ExercicesTout déplier
  1. 1

    Complétez la fonction maximum.

  2. 2

    Testez votre fonction avec plusieurs valeurs.

  3. 3

    Que doit retourner maximum(12, 7) ?

  4. 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 :

  • True si n est pair ;
  • False sinon.
def est_pair(n):
"""
Retourne True si n est pair, False sinon.
"""
ExercicesTout déplier
  1. 1

    Complétez la fonction est_pair.

  2. 2

    Testez votre fonction avec 8, 13 et 42.

  3. 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 ana^n.

Par exemple :

puissance(2, 5)

doit retourner :

32
Interdiction

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.
"""
ExercicesTout déplier
  1. 1

    Complétez la fonction puissance.

  2. 2

    Vérifiez que puissance(2, 5) retourne 32.

  3. 3

    Vérifiez que puissance(3, 3) retourne 27.

  4. 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.

Interdiction

Vous ne devez pas utiliser la fonction sum() de Python.

def somme(liste):
"""
Retourne la somme des éléments de liste.
"""
ExercicesTout déplier
  1. 1

    Complétez la fonction somme.

  2. 2

    Testez-la avec :

    somme([4, 7, 2])
  3. 3

    Testez ensuite exactement la même fonction avec :

    somme([10, 20, 30, 40])
  4. 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.

Interdiction

Vous ne devez pas utiliser la fonction max() de Python.

def maximum_liste(liste):
"""
Retourne le plus grand élément de liste.
"""
ExercicesTout déplier
  1. 1

    Complétez la fonction.

  2. 2

    Testez-la avec :

    [4, 9, 2, 15, 7]
  3. 3

    Cette fonction donnerait-elle un résultat cohérent avec une liste composée de valeurs négatives ?

  4. 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
Interdiction

Vous ne devez pas utiliser la méthode count().

def compter(liste, valeur):
"""
Retourne le nombre d'apparitions de valeur dans liste.
"""
ExercicesTout déplier
  1. 1

    Complétez la fonction compter.

  2. 2

    Testez-la avec l'exemple précédent.

  3. 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 :

  • True si valeur est présente dans liste ;
  • False sinon.
def contient(liste, valeur):
"""
Retourne True si valeur appartient à liste, False sinon.
"""
ExercicesTout déplier
  1. 1

    Complétez la fonction.

  2. 2

    Testez :

    contient([4, 8, 12, 16], 12)
  3. 3

    Testez :

    contient([4, 8, 12, 16], 7)
  4. 4

    Quelle différence y a-t-il entre les fonctions compter et contient ?

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.
"""
ExercicesTout déplier
  1. 1

    Complétez la fonction.

  2. 2

    Testez-la avec [2, 5, 8].

  3. 3

    Testez-la avec une autre liste de votre choix.

  4. 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.
"""
ExercicesTout déplier
  1. 1

    Créez deux listes vides pairs et impairs.

  2. 2

    Parcourez la liste reçue en paramètre.

  3. 3

    Ajoutez chaque valeur dans la bonne liste.

  4. 4

    Retournez les deux listes sous la forme [pairs, impairs].

  5. 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.

Une fonction devient un outil

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.

Contrainte

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.
"""
ExercicesTout déplier
  1. 1

    Complétez la fonction moyenne.

  2. 2

    Testez-la avec :

    moyenne([10, 12, 14])
  3. 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]
ExercicesTout déplier
  1. 1

    Complétez la fonction.

  2. 2

    Testez-la avec l'exemple précédent.

  3. 3

    Utilisez votre fonction pour récupérer toutes les notes supérieures à 10 dans :

    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]
Réutilisation obligatoire

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]
ExercicesTout déplier
  1. 1

    Complétez la fonction statistiques.

  2. 2

    Testez-la avec plusieurs listes.

  3. 3

    Combien de lignes sont réellement nécessaires dans cette nouvelle fonction ?

  4. 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]
Interdiction

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 :

  • True si le mot est un palindrome ;
  • False sinon.
Réutilisation obligatoire

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.

Indice

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()
ExercicesTout déplier

Sans réécrire les algorithmes précédents, utilisez uniquement vos fonctions pour :

  1. 1

    Afficher la moyenne de la classe.

  2. 2

    Afficher la meilleure note.

  3. 3

    Afficher le nombre de notes égales à 10.

  4. 4

    Indiquer si au moins un élève a obtenu 20.

  5. 5

    Créer une liste contenant uniquement les notes strictement supérieures à la moyenne.

Attention

Pour la dernière question, vous aurez besoin du résultat retourné par une première fonction pour appeler une seconde fonction.