WIP - TP Python fonctions

This commit is contained in:
Alexis Fourmaux 2025-07-30 17:51:33 +02:00
parent 68a8c00624
commit d2c1ba9e76
3 changed files with 179 additions and 1 deletions

View file

@ -28,7 +28,7 @@ Expliquer rapidement ce que c'est d'où ça vient, ses spécificités, pourquoi
- Bonnes pratiques -->
## TP
- TP1 découverte du langage avec Thonny et mode interactif + Bonus : Installation de python
- TP1 découverte du langage avec Thonny et mode interactif
- TP2 fonctions et utilisation de VSCode + Bonus modularité
- TP3 Modularité et structures de données
- Connexion avec l'adressage IP : [exercice de scanner d'adresse IP](https://lycee-benoit.tech/BTS/_defrance/ciel/d2/python/lab-containers.html#exo3)

View file

@ -0,0 +1,177 @@
# Python - Les fonctions
Dans le précédent TP vous avez vu les bases du langage Python. Vous les avez mises en pratique dans de petits programmes, et vous savez maintenant gérer des variables, des structures conditionnelles et des structures répétitives (les boucles). Vous pouvez déjà faire beaucoup de choses en Python avec ça.
Dans ce TP, nous allons commencer à utiliser Visual Studio Code, qui nous servira toute l'année d'éditeur de texte pour la plupart des TP. Ensuite, nous verrons une notion indispensable à tous les langages de programmation : les fonctions. Nous en profiterons pour réutiliser les notions du TP précédent pour continuer de les pratiquer et, petit à petit, mieux les maîtriser. Vous écrirez, pas à pas, un programme plus conséquent que ce que vous avez écrit jusqu'à maintenant.
## Utilisation de Visual Studio Code
### Mise en route
Pour ce TP nous n'allons plus utiliser Thonny mais Visual Studio Code. Thonny est un excellent logiciel pour débuter en python, et il sera facile à utiliser pour vous entraîner à la maison, mais il n'est pas beaucoup utilisé par les professionnels car il manque de nombreuses fonctionnalités indispensables. Visual Studio Code est un éditeur de texte libre édité par Microsoft, compatible avec toutes les plateformes. Il permet de faire ce que fait Thonny, mais également plein d'autres choses. Il est également un logiciel très utilisé en entreprise et pourra vous servir pour de nombreux langages de programmation. C'est pour cela que nous allons commencer à l'utiliser, et vous vous habituerez à son fonctionnement au fil du temps.
Lancez Visual Studio Code depuis le menu démarrer de votre machine. Vous verrez une interface comme ci-dessous. Sur la capture d'écran, les sections dont vous aurez besoin lors de ce TP sont indiquées par des flèches.
```admonish travail
- Ouvrez un répertoire : créez un sous-répertoire dans votre espace personnel, sous `projets/python/tp2_fonctions/` et selectionnez-le.
- Vérifiez dans le menu extensions que l'extension Python proposée par Microsoft soit bien installée. Sinon, recherchez-la dans la barre de recherche du menu des extensions et installez-la.
Cette extension vous permettra d'avoir une coloration syntaxique ainsi que des suggestions pour écrire le code qui vous seront très utiles. Elle vous permettra aussi de détecter des erreurs de syntaxe, ce qui pourra vous permettre de progresser plus vite.
- Ouvrez l'explorateur. Vous verrez qu'il n'y a aucun fichier, ce qui est normal. Nous en créerons un tout à l'heure.
- Ouvrez le menu Terminal, et cliquez sur `Nouveau terminal`. Vous verrez apparaître un volet en bas avec un terminal prêt à l'emploi.
- Dans le terminal, tapez la commande `Python`. Vous verrez apparaître l'invite de commande de l'interpréteur python. Vous pourrez l'utiliser pour essayer des commandes python au cours du TP. En attendant, essayez de taper `print("Hello, World!")` dans l'interpréteur pour vérifier que tout fonctionne.
- Dans l'explorateur, faites un clic droit et créez un nouveau fichier que vous appellerez `main.py`. Dans ce fichier, ajoutez la ligne `print("Hello, World!")`.
- Via l'explorateur Windows, allez dans le répertoire de travail que vous avez sélectionné à la première étape. Vous y trouverez votre fichier main.py nouvellement créé : l'explorateur de VSCode montre le contenu de votre répertoire de travail. Mais vous l'avez toujours sous les yeux, ce qui est bien plus pratique.
- Dans un nouveau terminal (vous pouvez cliquer sur le petit + en haut à droite du volet terminal actuel) tapez `python main.py`. Vous devriez voir s'afficher `Hello, World!` dans le terminal.
- Cliquez maintenant sur le triangle vert en haut à droite de votre fichier. Vous devriez voir un nouveau terminal s'ouvrir et votre script sera exécuté. Vous connaissez maintenant deux méthodes pour lancer un script Python dans VSCode.
Nous voilà prêts à travailler.
```
## Les fonctions
### Utilisation d'une fonction
Nous allons maintenant écrire un script que nous modifierons pour découvrir les fonctions.
Vous connaissez déjà certaines fonctions, celles que vous avez utilisées lors du précédent TP : `print`, `input`, `math.sqrt`, `range` ... Ce sont des fonctions que vous avez **appelées** mais qui existent déjà, soit par défaut dans le langage Python, soit dans une bibliothèque (`math`).
```admonish travail
- Copiez le script suivant dans votre fichier `main.py`. Indiquez les fonctions que vous identifiez.
~~~python
import math
nb = 7
print("Table par 7 : ")
for i in range(1, 11):
print(f"{i} * {nb}", "=", i*nb)
racine_carree = math.sqrt(7)
retour_print = print(f"Racine carrée de {nb} : {racine_carree}")
~~~
1. Indiquez les symboles utilisés pour appeler des fonctions.
1.
1. Quels sont les **arguments** (ou **paramètres**) passés à la fonction `range` ligne 6 ?
1. Quel symbole sert à les séparer ?
1. Que se passe-t-il si on retire ce symbole ?
1.
1. Modifiez l'ordre des arguments passés à `print` ligne 7. Qu'est-ce que ça change ? À votre avis pourquoi ?
1. Ajoutez à la fonction `print` ligne 7 un argument `sep='-'`. Réexécutez le script. Qu'est-ce que ça change ?
1. Ajoutez maintenant un argument `end='|'` à la fonction `print` ligne 7. Réexécutez le script. Qu'est-ce que ça change ?
1. Expliquez selon vous ce que font les paramètres `sep` et `end` de la fonction `print`
1. Inversez l'ordre des paramètres `sep` et `end` entre les parenthèses. Qu'est-ce que ça change ? À votre avis pourquoi ?
1.
1. Quelle est la valeur de la variable `racine_carree` à la fin du script ? D'où vient cette valeur ?
1. Quelle est la valeur de la variable `retour_print` à la fin du script ? À votre avis pourquoi ?
```
```admonish success title="À retenir"
- Les fonction s'utilisent avec la syntaxe suivante : `nom_de_la_fonction(parametre_1, parametre_2, ...., parametre_n)`
- Vous mettez le nom de la fonction, suivi de parenthèses
- Entre les parenthèses vous mettez les paramètres séparés par des virgules
- Si une fonction n'a pas besoin de paramètres, les parenthèses sont quand même indispensables
- Certaines fonctions peuvent prendre des paramètres nommés, avec la syntaxe suivante : `nom_de_la_fonction(nom_parametre=valeur_parametre)`. Les paramètres nommés sont toujours à la fin et leur ordre n'a pas d'importance.
- Une fonction peut renvoyer un résultat, que l'on peut alors affecter à une variable.
- Si une fonction ne renvoie rien, alors elle renverra en réalité la valeur spéciale `None`.
```
### Créer notre première fonction
Maintenant que vous savez comment utiliser une fonction nous allons créer une fonction par nous-mêmes.
Si on reprend le code de la partie précédente, on voit qu'il permet d'afficher la table de multiplication par 7. Nous allons en faire une fonction.
```admonish travail
1. Remplacez le contenu de votre fichier main.py par le code qui suit. C'est le même que dans la partie précédente, débarrassé des choses qui ne servent pas à calculer notre table de 7. Vérfiez qu'il affiche correctement ce que vous attendez.
~~~python
nb = 7
print("Table par 7 : ")
for i in range(1, 11):
print(f"{i} * {nb}", "=", i*nb)
~~~
2. Une fonction se définit de la manière suivante :
~~~python
def nom_de_la_fonction(parametre_1, parametre_2, ..., parametre_n):
# Instructions
~~~
- On utilise le mot-clé `def` suivi du nom de la fonction.
- Entre parenthèses on ajoute les paramètres qu'il faudra fournir
- à la fin de la ligne on met `:` (encore et toujours)
- On passe à la ligne suivante et on indente pour écrire les instructions.
Modifiez le code pour mettre le contenu au dessus dans une fonction, comme ci-dessous. Puis exécutez-le. Que se passe-t-il ? A votre avis, pourquoi ?
~~~python
def table_par_7():
nb = 7
print("Table par 7 : ")
for i in range(1, 11):
print(f"{i} * {nb}", "=", i*nb)
~~~
3. Il faut en réalité appeler notre fonction maintenant. En 2. elle était uniquement déclarée, Python connaissait son existence. Mais nous ne lui avons jamais dit de l'utiliser.
1. Ajoutez alors la ligne `table_par_7()` à la toute fin du fichier. Exécutez le code et vérifiez que cette fois, tout se passe comme prévu.
2. Déplacez cette ligne tout en haut du fichier. Que se passe-t-il ? Pourquoi à votre avis ?
3. Replacez la ligne à la fin du fichier, comme en 3.1.
4. Bon, maintenant nous avons une fonction qui fait la même chose qu'avant. Mais si on veut calculer la table par 5 ou 8, il nous faudrait pouvoir passer la table en paramètre.
1. Renommez la fonction en `table`, puisqu'elle nous servira à d'autres tables que celle par 7
2. Ajoutez un argument `nb` dans la définition et retirez la variable `nb = 7`
~~~python
def table():
print("Table par {nb} : ")
for i in range(1, 11):
print(f"{i} * {nb}", "=", i*nb)
~~~
3. Maintenant, donnez le code nécessaire pour afficher la table par 5. Vérifiez que cela fonctionne bien dans votre script.
5. Ajoutez un nouveau paramètre `maximum` qui servira à déterminer le nombre de lignes à afficher. Par exemple, si `nb` vaut 5 et `maximum` vaut 20, on affichera la table de 5 avec les valeurs de 1 à 20.
Modifiez les appels à votre fonction en conséquence et vérifiez que tout fonctionne comme prévu.
Mettez le code dans votre compte rendu.
6. Dans la majorité des cas on voudra probablement afficher la table jusqu'à 10. Pour nous éviter de devoir préciser `maximum` à chaque fois, nous allons mettre une valeur par défaut à `maximum` pour que la fonction affiche les 10 premières lignes si le paramètre n'est pas précisé.
Pour cela ajoutez simplement `=10` dans la déclaration de la fonction.
Exécutez votre fonction avec `table(5, 20)` puis `table(7)` et vérifiez que nous avons bien la table par 5 de 1 à 20 dans le premier cas, et la table par 7 de 1 à 10 dans le second
7. Copiez le code suivant à la suite de votre fichier, puis exécutez-le. Quelle est la dernière ligne qui s'affiche ? À votre avis pourquoi ?
~~~python
def exemple():
print("Ma première fonction d'exemple")
def exemple():
print("Ma deuxième fonction d'exemple")
exemple()
~~~
```
```admonish success title='À retenir'
- Pour déclarer une fonction en python :
~~~python
def nom_de_la_fonction(parametre_1, parametre_2, ..., parametre_n):
# Instructions
~~~
- On utilise le mot-clé `def` suivi du nom de la fonction.
- Entre parenthèses on ajoute les paramètres qu'il faudra fournir
- À la fin de la ligne on met `:` (encore et toujours)
- On passe à la ligne suivante et on indente pour écrire les instructions.
- Les paramètres fonctionnent comme des variables : on peut les utiliser dans la fonction avec leur nom.
- On peut définir une valeur par défaut à un paramètre : il suffit d'écrire `parametre=valeur_par_defaut` lors de la déclaration. On peut alors omettre le paramètre, qui prendra automatiquement la valeur par défaut.
- Deux fonctions ne peuvent pas avoir le même nom, sinon, la dernière a avoir été déclarée écrase la précédente.
```
### L'instruction `return`
- return value
- return seul
- après le return, rien n'est exécuté
### Mise en pratique
## Les modules

View file

@ -3,6 +3,7 @@
- [Bases de l'algorithmique avec Python](./CIEL1/01-bases-python/algorithmique-python.md)
- [TP1 - Découverte de Python](./CIEL1/01-bases-python/tp/01_decouverte.md)
- [TP1 - Corrigé - Découverte de Python](./CIEL1/01-bases-python/tp/_01_decouverte.md)
- [TP2 - Fonctions](./CIEL1/01-bases-python/tp/02_fonctions.md)
- [TD1 - Bases de Python](./CIEL1/01-bases-python/td/td01-python.md)
- [TD2 - Python](./CIEL1/01-bases-python/td/td02.md)
- [L'adressage IP](./CIEL1/02-reseau/cours/adressage-ip.md)