TP - Chapitre 4 : Les fonctionsN.B. Niveau : Première Générale, enseignement de spécialité NSI (Numérique et Sciences Informatiques)
Mission 1 ☆ : fonction f(x)
Mission 2 ★ : Afficher la taille en octets et en bits d'un fichier
Mission n°3 : Trouver la clé
Mission n°4 : Nombre de photos stockés sur une clé USB
Mission n°5 : Calculer l'aire à partir du rayon
Mission n°6 : Afficher les initiales
Mission n°7 : Créer un identifiant
Mission n°8 : Conversion binaire → décimal
Mission n°9 : Convertir un entier compris entre 0 et 255 en Hexadécimal
Mission n°10 : Vérifie la saisie d'un numéro de sécurité sociale
Mission n°11 : Recette du gâteau au chocolat selon MarmitonNous avons déjà vu beaucoup de fonctions : print(), type(),
len(), input(), range()...
Ce sont des fonctions prédéfinies (built-in functions).
Nous avons aussi la possibilité de créer nos propres fonctions !
Une fonction est une portion de code que l'on peut appeler au besoin (c'est une sorte de sous-programme).
L'utilisation des fonctions évite des redondances dans le code : on obtient ainsi des programmes plus courts et plus lisibles.
Par exemple, nous avons besoin de convertir à plusieurs reprises des degrés Celsius en degrés Fahrenheit :
>>> print (100.0*9.0/5.0+32.0)
212.0
>>> print (37.0*9.0/5.0+32.0)
98.6
>>> print (233.0*9.0/5.0+32.0)
451.4
La même chose en utilisant une fonction :
>>> def F(DegreCelsius):
print (DegreCelsius*9.0/5.0+32.0)
>>> F(100)
212.0
>>> F(37)
98.6
>>> x = 233
>>> F(x)
451.4
defSyntaxe :
def NomDeLaFonction(parametre1,parametre2,parametre3,...):
""" Documentation
qu'on peut écrire
sur plusieurs lignes """ # docstring entouré de 3 guillemets (ou apostrophes)
bloc d'instructions # attention à l'indentation
return resultat # la fonction retourne le contenu de la variable resultat
Une fois la fonction définie, nous pouvons l'appeler en saisissant MaPremiereFonction(). Print permet d'afficher ce que la fonction retourne, ici "Bonjour"
L'accès à la documentation se fait avec la fonction pré-définie help(). (Cette fonction n'est pas implémentée sur le site Internet).
:
>>> help(MaPremiereFonction) # affichage de la documentation
Help on function MaPremiereFonction in module __main__:
MaPremiereFonction()
paramètre : aucun précondition : aucune rôle : Cette fonction affiche 'Bonjour'
La fonction suivante simule le comportement d'un dé à 6 faces.
Pour cela, on utilise la fonction randint() du module random.
Une fonction avec deux paramètres :
Une fonction qui retourne une liste :
Une fonction qui affiche la parité d'un nombre entier.
Il peut y avoir plusieurs instructions return dans une
fonction.
L'instruction return provoque le retour immédiat de la
fonction.
La portée d'une variable est l'endroit du programme où on peut accéder à la variable.
Observons le script suivant :
La variable a de valeur 20 est créée dans la fonction
: c'est une variable locale à la fonction.
Elle est détruite dès que l'on sort de la fonction.
Changer la variable a dans l'espace global :
Mission 1 ☆
carre qui prend en paramètre une variable val et qui retourne le carré de val. Créer la documentation de la fonction.
>>> print(carre(2),carre(-4),carre(10.1)) 4 16 102.01

Mission 2 ★
Calculer les moyennes des matières
On donne le dictionnaire des moyennes par matières moyennes={"math":[15,11,14,8],"NSI":[12,20,11,15,9]}
Ecrire la fonction moyenne qui prend en paramètre notes une liste des notes d'une matière et qui retourne la moyenne sous la forme d'un float.
print(moyenne(moyennes["maths"])) 12.0 print(moyenne(moyennes["NSI"])) 13.4

Ecrire une fonction somme qui prend en paramètre n et retourne la somme des n premiers entiers (0 à n)
>>> print(somme(2)) 3 >>> print(somme(20)) 210

Mini projet : Identifiants et mots de passe
On vous fournit le fichier csv de votre classe les noms et les prénoms des élèves. Vous êtes chargés de générer des mots de passes aléatoires et de générer un affichage nom;prénom;identifiant;mot de passe (pour simplifier, on ne gère pas les doublons).
Le miniprojet se décompose sous formes de fonctions :
Mission 4 ★
Ecrire une fonction qui retourne la place d'une lettre dans une chaine de caractères. Si elle ne s'y trouve pas la fonction retourne -1
Algorithme :
Définir la fonction place_de_lettre(lettre,chaine)
place ← -1
i ← 0
pour chaque caractere dans la chaine
si le caractere est égal à la lettre
alors i → place
incrémenter i
retourne la place
Exemple :
>>> print(place_de_lettre("c","abcdefghijklmnopqrstuvwxyz"))
2
>>> print (place_de_lettre("é","abcdefghijklmnopqrstuvwxyz"))
-1
Mission 4 validée : 
Mission 5 ★
Ajouter au script ci-dessus une fonction qui retourne une chaîne de caractères sans les caractères accentués.
Algorithme :
Définir la fonction enleve_accents(chaine)Exemple :
accents ← "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ"
pas_accents ← "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn"
resultat ← ""
pour chaque lettre dans chaine
place = recherche la place de lettre dans accents
Si place ≥ 0
ajouter à resultat le caractère de la chaine pas_accents de la même place
sinon
ajouter à resultat la lettre
retourne resultat
>>> print (enleve_accents("DJÀRAÏ Zakaryyâ"))
DJARAI Zakaryya
Mission 5 validée : 
Mission 6 ★★
Ecrire une fonction qui retourne un mot de passe de 8 caractères alphanumériques (consonne majuscule, voyelle, consonne, voyelle, consonne, voyelle, caractère spécial, chiffre).
Structure des données, un dictionnaire : composition = {"chiffres":'0123456789',"consonnes":"bcdfghjklmnpqrstvwxz","voyelles":"aeiouy","speciaux":"%$&<>@=+()*"}
Je vous conseille de faire une chaine de caractères vide et lui ajouter chaque élément du mot de passe.
la fin du programme, retourner le mot de passe généré.
Avant de vous lancer dans le codage, faire l'algorithme du programme.
Résultat attendu :
>>> print (mot_de_passe())
Jolymi&3
Mission 6 validée : 
Vérifier la résistance des mots de passe générés sur le site Internet kaspersky

Mission 7 ★ : Lecture du fichier
En vous aidant très simplement du code de la mission 7 du chapitre
3, adapter le programme afin de créer la fonction
lecture_fichier qui prend en paramètre nom_fichier (str) une chaine de caractères qui sera le nom du fichier à lire et qui renvoie une liste contenant les noms,
et prénoms.
Résultat attendu :
>>> print(lecture_fichier("Eleves.csv"))
[['ÃITSAYD', 'Àbdelwahd\n'], ['ALAOUÏ', 'Moulay-Wassim\n'], ['ÄNANTHARAJAH', 'Nilaksaan\n'], ['ÂYDOGAN', 'Mervé\n'], ['BELLOUHASSI', 'Yassir\n'], [...]]
Mission 7 validée : 
Mission 8★ : Assemblage des fonctions
lecture_fichier(nom), coller les fonctions :place_de_lettre(lettre,chaine)enleve_accents(chaine)mot_de_passe()lower().identifiant qui prend en paramètres prenom et nom et qui retourne la chaine de caractères correspondant à l'identifiant.affiche_csv(eleves) qui génère avec un print la sortie ci-dessous : affiche_csv(lecture_fichier("Eleves.csv"))Nom;Prénom;Identifiant;Mot de passe ÃITSAYD;Àbdelwahd;aaitsayd;Fuweka@2 ALAOUÏ;Moulay-Wassim;malaoui;Cesyce@0 ÄNANTHARAJAH;...
Mission 8 validée : 
Rendu dans un tableur :
Fond : Texte : Tables : Thème du langage:
Contenu
sous licence CC BY-NC-SA 3.0
Pascal Hassenforder 07/11/2020
MAJ le 12/01/2026