đ Scripts et fonctions
- Script
- Débogueur
- Trace
- Fonctions
- Modules
- BibliothĂšques
- Matplotlib
- Exercices
Le mode interactif est pratique pour tester des idées, mais :
- Tout disparaĂźt dĂšs que vous fermez la console (ou PyCharm).
- Vous ne pouvez pas conserver votre code.
- Vous devez tout retaper Ă chaque fois.
C'est pourquoi, à partir de maintenant, nous allons créer des scripts Python, c'est-à -dire des fichiers .py dans lesquels nous allons écrire et conserver tout notre code.
On va vite vouloir donner plein d'ordres Ă l'ordinateur en lui parlant en Python.
Ăa devient pĂ©nible de les Ă©crire les uns aprĂšs les autres en mode interactif.
Alors, on va écrire les ordres les uns aprÚs les autres dans un fichier.
On va appeler ça un script Python.
ConcrĂštement, c'est juste un fichier texte avec des instructions en Python.
On va faire terminer son nom par .py pour éviter de le mélanger avec les fichiers .pdf, .jpg, etc.
On va taper dans la zone du fichier les instructions, une par ligne.
Par exemple :
# ceci est un commentaire, cette ligne est pour les humains
# l'ordinateur va l'ignorer car elle commence par un "#"
print("bonjour bonjour cher maitre humain")
6 / 2 * (1 + 2)
print("Ca va aujourd' hui?")
print( 4 / 5 * (9 + 6) )
x = 6
y = 7
resultat = x * y
x = 0
y = resultat
On va ensuite exécuter notre script (il ne s'agit pas de le tuer).
On demande à python de suivre nos ordres, d'exécuter nos instructions, une par une.
En suivant cette recette, créez, dans un projet PyCharm, un script Python, copiez-y le code ci-haut, et exécutez-le.
Que voyez-vous?
- L'interpréteur a affiché trois lignes. Pourquoi?
- Il a exécuté les instructions ligne par ligne, de haut en bas.
- Il n'affiche rien pour les 2 premiĂšres lignes, car elles sont des commentaires.
- Il a exécuté la ligne 3, qui est une instruction
print, et il a affiché le texte entre guillemets. - Il a ensuite exécuté la ligne 4, qui est un calcul, mais comme on ne lui a pas demandé d'afficher le résultat, il ne l'affiche pas.
- Il a ensuite exécuté la ligne 5, qui est encore une instruction
print, et il a affiché le texte entre guillemets. - Il a ensuite exécuté la ligne 6, qui est encore une instruction
print, et il a affiché le résultat du calcul entre parenthÚses. - Il a ensuite exécuté les lignes 7 à 11, qui sont des affectations de variables. Comme on ne lui a pas demandé d'afficher quoi que ce soit, il n'affiche rien.
Ăcrire son code dans des fichiers .py permet :
- â De conserver vos programmes.
- â De pouvoir les exĂ©cuter autant de fois que vous voulez.
- â De pouvoir les amĂ©liorer petit Ă petit.
Le dĂ©bogueur est un outil puissant qui permet de suivre l'exĂ©cution de votre code pas Ă pas. Il vous permet de voir la valeur des variables, d'arrĂȘter l'exĂ©cution Ă des points spĂ©cifiques (points d'arrĂȘt), et de comprendre comment votre programme fonctionne en dĂ©tail.
Utiliser le débogueur est essentiel pour :
- Comprendre le flux d'exécution de votre programme.
- Analyser le comportement de votre code dans des situations spécifiques.
- Identifier et corriger les erreurs dans votre code.
On va ĂȘtre honnĂȘte, vos scripts ne vont pas souvent faire ce que vous voulez. Par contre, ils vont faire exactement ce que vous avez Ă©crit. On va donc avoir besoin d'une mĂ©thode efficace pour comprendre ce qui se passe dans notre code.
Dans un environnement de développement (ou IDE, Integrated Developpement Environment) comme PyCharm, on pouvoir :
- arrĂȘter le temps!
- et voir à l'intérieur de l'ordinateur!
Lisez la section Déboguer pour apprendre à utiliser le débogueur dans PyCharm.
Ensuite, mettez un point d'arrĂȘt Ă la ligne de la premiĂšre instruction (les commentaires ne sont pas des instructions) dans le script Python créé Ă la section Script, donc Ă la ligne print("bonjour... :
# ceci est un commentaire, cette ligne est pour les humains
# l'ordinateur va l'ignorer car elle commence par un "#"
print("bonjour bonjour cher maitre humain")
6 / 2 * (1 + 2)
print("Ca va aujourd' hui?")
print( 4 / 5 * (9 + 6) )
x = 6
y = 7
resultat = x * y
x = 0
y = resultat
Roulez votre script, mais cette fois, en mode dĂ©bogage (en cliquant sur l'icĂŽne du bug đȘČ).
- L'exĂ©cution va s'arrĂȘter sur le point d'arrĂȘt.
- La ligne de code oĂč se trouve le point d'arrĂȘt sera mise en surbrillance et n'aura pas encore Ă©tĂ© exĂ©cutĂ©e.
- Si vous cliquez sur le bouton Step Over
, l'instruction sera exécutée et vous pourrez voir le résultat dans la console.
- Si vous continuer Ă cliquer sur
, vous pourrez exécuter le script ligne par ligne et observer son comportement.
- Si vous avez plus d'un point d'arrĂȘt, vous pouvez cliquer sur le bouton Resume
qui permet de continuer l'exĂ©cution jusqu'au prochain point d'arrĂȘt.
- Vous pouvez Ă©galement arrĂȘter l'exĂ©cution Ă tout moment en cliquant sur le bouton Stop
.
Lorsque vous arrivez Ă la ligne x = 6, avancez une ligne Ă la fois et observez les variables qui sont créées et affichĂ©es dans la fenĂȘtre de dĂ©bogage, ainsi que leurs modification. En particulier, notez le changement du contenu des variables xet ylorsqu'elles sont modifiĂ©es.
Si vous avez des difficultés à utiliser le débogueur, n'hésitez pas à demander de l'aide à votre enseignant ou à vos camarades de classe.
La trace est un outil qui permet de suivre l'exécution d'un programme en affichant les valeurs des variables et les instructions exécutées à chaque étape. C'est un excellent moyen de comprendre comment votre code fonctionne et de détecter les erreurs.
Lisez la section Trace d'exécution pour apprendre à rédiger une trace.
Ensuite, avec un crayon et du papier, générez la trace (en tableau) pour le script Python créé à la section Script, montré ci-bas.
Une fois votre trace faite, vous allez exécuter le code pour valider qu'elle est correcte, en suivant ces étapes :
- Placez un point d'arrĂȘt sur la premiĂšre ligne qui s'exĂ©cute.
- Lancez l'exécution en mode débogage.
- Sautez de ligne en ligne pour voir si la trace est correcte (valeurs des variables, instructions exécutées).
# ceci est un commentaire, cette ligne est pour les humains
# l'ordinateur va l'ignorer car elle commence par un "#"
print("bonjour bonjour cher maitre humain")
6 / 2 * (1 + 2)
print("Ca va aujourd' hui?")
print( 4 / 5 * (9 + 6) )
x = 6
y = 7
resultat = x * y
x = 0
y = resultat
Vous devriez normalement obtenir cette trace :
| # ligne | x | y | resultat | affichage |
|---|---|---|---|---|
| 3 | bonjour bonjour cher maitre humain | |||
| 4 | ||||
| 5 | Ca va aujourd' hui? | |||
| 6 | 12 | |||
| 7 | 6 | |||
| 8 | 6 | 7 | ||
| 9 | 6 | 7 | 42 | |
| 10 | 0 | 7 | 42 | |
| 11 | 0 | 42 | 42 |
Une fonction est un ensemble dâinstructions rĂ©utilisables regroupĂ©es sous un nom.
đ Le nom doit ĂȘtre significatif : par exemple, on devine que print() sert Ă afficher quelque chose.
⥠Comprendre une fonctionâ
Quand on utilise une fonction, il nâest pas nĂ©cessaire de savoir tout son code interne.
Il faut surtout comprendre :
- Quels paramĂštres attend-elle ? (les infos entre
()) - Est-ce quâelle retourne une valeur quâon peut stocker ?
- Y a-t-il des cas limites ou erreurs possibles (exceptions) ?
đŻ Les paramĂštresâ
Pour appeler une fonction :
nom_de_fonction(param1, param2, ...)
âĄïž Le nombre et lâordre des paramĂštres sont importants.
đŸ Conserver une valeur de retourâ
On peut stocker le rĂ©sultat dâune fonction dans une variable, par exemple :
mon_age_arrondi = round(17.8)
Vous trouverez dans la section Fonctions utiles de l'aide-mémoire une liste non-exhaustive de fonctions utiles.
Découvrons-en quelques-unes :
La fonction input()â
La fonction input() permet de demander à l'utilisateur de saisir une entrée.
Elle peut ĂȘtre utilisĂ©e avec ou sans paramĂštre.
- Sans paramĂštre, elle attend une saisie de l'utilisateur.
- Avec un paramĂštre, elle affiche un message pour guider l'utilisateur.
Par exemple (essayez ce code dans un script Python) :
# Exemple : input() sans paramĂštre
saisie_utilisateur = input() # attend une saisie de lâutilisateur
print(saisie_utilisateur)
# Exemple : input() avec un paramĂštre
saisie_utilisateur = input("Veuillez saisir votre prénom : ")
print(saisie_utilisateur)
# Longueur d'une chaĂźne de caractĂšres
longueur = len(saisie_utilisateur)
La fonction len()â
La fonction len() permet de calculer la longueur d'une chaĂźne de caractĂšres (le nombre de caractĂšres qu'elle contient).
Elle prend une chaßne de caractÚres en paramÚtre et retourne un entier représentant le nombre de caractÚres.
Voici quelques exemples de fonctions utiles en Python, qui prennent différents nombres de paramÚtres :
# Conversion de types
valeur_entier = int("3")
valeur_flottant = float("3.41")
# Puissances et arrondi
valeur_puissance = pow(2, 3)
valeur_arrondie = round(3.14159, 2)
# Type dâune variable
type_variable = type(longueur)
On peut imbriquer les appels de fonctions pour combiner plusieurs opérations en une seule ligne.
Ainsi, la valeur retournĂ©e par une fonction peut ĂȘtre utilisĂ©e directement comme paramĂštre d'une autre fonction.
Par exemple, pour obtenir des entrées numériques en une seule ligne :
# Exemple dâentrĂ©es numĂ©riques
nombre1 = int(input("Entrez un premier nombre : "))
nombre2 = int(input("Entrez un second nombre : "))
est beaucoup compacte que :
nombre1_en_str = input("Entrez un nombre : ")
nombre1 = int(nombre1_en_str)
nombre2_en_str = input("Entrez un second nombre : ")
nombre2 = int(nombre2_en_str)
La fonction print()â
Comme on a déjà vu, la fonction print() permet d'afficher du texte ou des valeurs dans le terminal.
Elle peut prendre un nombre variable de paramÚtres, séparés par des virgules, qu'elle concaténera avec des espaces par défaut.
Par exemple, roulez ce code dans un script Python pour voir comment elle fonctionne :
# Exemple dâentrĂ©es numĂ©riques
nombre1 = int(input("Entrez un premier nombre : "))
nombre2 = int(input("Entrez un second nombre : "))
# Fonction avec paramĂštres multiples
print("Le résultat de", nombre1, "x", nombre2, "est :", nombre1 * nombre2)
# Variante moderne : f-string
message = f"Le résultat de {nombre1} x {nombre2} est : {nombre1 * nombre2}"
print(message)
Les f-strings (ou formatted strings) permettent de créer des chaßnes de caractÚres formatées en insérant des valeurs ou des variables directement dans la chaßne.
Elles commencent par f avant les guillemets et utilisent des accolades {} pour insérer des valeurs ou des variables.
Par exemple, dans le code ci-dessus, f"Le résultat de {nombre1} x {nombre2} est : {nombre1 * nombre2}" crée une chaßne avec les valeurs des variables nombre1 et nombre2 directement intégrées.
# le résultat est arrondi à 2 décimales :
print(f"Le résultat de {nombre1} x {nombre2} est : {nombre1 * nombre2}.")
Formatage des nombresâ
Les f-strings permettent un contrÎle trÚs précis de la présentation des nombres entiers et flottants.
Il suffit dâajouter, Ă lâintĂ©rieur des accolades {}, aprĂšs lâexpression, un : suivi dâoptions pour contrĂŽler le format.
Par exemple, {nombre1 * nombre2:.2f} afficherait le résultat de la multiplication arrondi à deux décimales.
| Syntaxe | Effet | Exemple |
|---|---|---|
:.2f | Arrondi Ă 2 dĂ©cimales, complĂ©tĂ© par des 0 | 3.14159 â 3.14 / 3.5 â 3.50 |
:.0f | Arrondi sans dĂ©cimale | 3.99 â 4 |
:.3e | Notions scientiques aprĂšs la 3Ăšme dĂ©cimale | 123456 â 1.235e+05 |
:, | SpĂ©cifier le sĂ©parateur de de milliers | 1000000 â 1,000,000 |
:05d | Entier sur 5 chiffres, complĂ©tĂ© par des 0 | 42 â 00042 |
:+.2f | Affiche le signe + ou - et conserve 2 dĂ©cimales | 3.5 â +3.50 / -2 â -2.00 |
Formatage des chaĂźnes de caractĂšresâ
Il est possible de forcer une chaĂźne de caractĂšres Ă occuper un certain nombre de positions et de contrĂŽler son alignement. Ceci est particuliĂšrement utile lorsque lâalignement vertical entre plusieurs lignes affichĂ©es dans la console doit ĂȘtre respectĂ© (par exemple, lors de lâaffichage dâun tableau en console).
| Syntaxe | Effet | Exemple |
|---|---|---|
:<10 | AlignĂ© Ă gauche sur 10 caractĂšres | `"Mots" â Mots      |
:>10 | AlignĂ© Ă droite sur 10 caractĂšres | `"Mots" â       Mots |
:^10 | CentrĂ© sur 10 caractĂšres | `"Mots" â    Mots   |
Certaines fonctions ne sont pas disponibles par défaut.
Pour les utiliser, il faut dâabord importer un module (un fichier qui contient des fonctions prĂȘtes Ă
lâemploi).
đ En gĂ©nĂ©ral, on Ă©crit les import au dĂ©but du fichier Python.
đĄ Remarque : pour appeler une fonction dâun module, on utilise nom_du_module.fonction().
Exemple simple avec le module math :
import math # Importer le module "math"
print(math.sqrt(16)) # Résultat : 4.0