Extrait le tuto VSCode dans un fichier à part
|  | @ -1 +0,0 @@ | |||
| # TP1 - Découverte de Python | ||||
|  | @ -8,7 +8,7 @@ Dans ce TP, nous allons commencer à utiliser Visual Studio Code, qui nous servi | |||
| 
 | ||||
| ### 1.1 - 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. C'est 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. | ||||
| 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 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. C'est 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. | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										178
									
								
								src/cours/CIEL1/01-bases-python/tp/TP_MDP02_fonctions.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,178 @@ | |||
| # Itération 2 - Fonctions et modules | ||||
| 
 | ||||
| ## Objectifs du TP | ||||
| 
 | ||||
| ### Apprendre | ||||
| 
 | ||||
| - **Fonctions** : Création de fonctions | ||||
| - **Refactorisation** : réorganiser le code existant | ||||
| - **Modules** : Répartir le code dans différents fichiers | ||||
| 
 | ||||
| ### Objectif technique | ||||
| 
 | ||||
| Créer un menu interactif pour que l'utilisateurice puisse choisir son option | ||||
| 
 | ||||
| ``` | ||||
| ================================================ | ||||
| CIEL - Générateur de mots de passe | ||||
| ================================================ | ||||
| Quel type de mot de passe souhaitez-vous créer ? | ||||
| 1 - Mot de passe avec configuration par défaut | ||||
| 2 - Mot de passe avec configuration personnalisée | ||||
| 3 - Phrase de passe avec configuration par défaut | ||||
| 4 - Phrase de passe avec configuration personnalisée | ||||
| 0 - Quitter | ||||
| Saisissez votre choix : 1 | ||||
| Mot de passe par défaut | ||||
| ``` | ||||
| 
 | ||||
| ## Étapes | ||||
| 
 | ||||
| ### 1 - Préparation | ||||
| 
 | ||||
| **Objectif :** Préparer votre fichier de script et commencer à travailler avec Thonny | ||||
| 
 | ||||
| ```admonish travail | ||||
| - Créer un fichier `main.py` dans votre répertoire de travail | ||||
| ``` | ||||
| 
 | ||||
| ### 2 - Affichage du titre et du menu | ||||
| 
 | ||||
| **Objectif :** Afficher le titre et toutes les options du menu | ||||
| 
 | ||||
| ```admonish tip title="A utiliser" | ||||
| - La fonction `print` | ||||
| ``` | ||||
| 
 | ||||
| **Résultat attendu :** | ||||
| ``` | ||||
| ================================================ | ||||
| CIEL - Générateur de mots de passe | ||||
| ================================================ | ||||
| Quel type de mot de passe souhaitez-vous créer ? | ||||
| 1 - Mot de passe avec configuration par défaut | ||||
| 2 - Mot de passe avec configuration personnalisée | ||||
| 3 - Phrase de passe avec configuration par défaut | ||||
| 4 - Phrase de passe avec configuration personnalisée | ||||
| 0 - Quitter | ||||
| ``` | ||||
| 
 | ||||
| ```admonish travail | ||||
| - Utilisez du code pour afficher exactement le texte ci-dessus | ||||
| ``` | ||||
| 
 | ||||
| ### 3 - Demander le choix à l'utilisateur | ||||
| 
 | ||||
| **Objectif :** Afficher "Saisissez votre choix : " et récupérer la réponse de l'utilisateur  | ||||
| 
 | ||||
| ```admonish tip title="A utiliser" | ||||
| - La fonction `input` | ||||
| ``` | ||||
| 
 | ||||
| ```admonish question | ||||
| 1. Quel est le type de la donnée récupérée via `input` | ||||
| 2. Comment allez-vous stocker cette donnée ? Quel type aura la variable ? | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| ### 4 - Gérer les choix valides | ||||
| 
 | ||||
| **Objectif :** Utiliser des conditions pour gérer les choix de l'utilisateur (1, 2, 3, 4 et 0) | ||||
| 
 | ||||
| ```admonish tip title="A utiliser" | ||||
| - `if`  | ||||
| - `elif` | ||||
| - Opérateurs de comparaison | ||||
| ``` | ||||
| 
 | ||||
| **Résultat attendu :** Afficher le texte pour chacun des cas | ||||
| 
 | ||||
| |Choix|Texte à afficher| | ||||
| |-|-| | ||||
| |1|Mot de passe par défaut| | ||||
| |2|Mot de passe personnalisé| | ||||
| |3|Phrase de passe par défaut| | ||||
| |4|Phrase de passe personnalisée| | ||||
| |0|Vous quittez le programme| | ||||
| 
 | ||||
| ### 5 - Gérer les choix invalides | ||||
| 
 | ||||
| **Objectif :** Traiter le cas où l'utilisateur saisit un choix non valide | ||||
| 
 | ||||
| ```admonish tip title="A utiliser" | ||||
| - Ajouter un `else` pour capturer les autres cas | ||||
| - Utiliser une chaîne formatée | ||||
| ``` | ||||
| 
 | ||||
| **Résultat attendu :** Afficher le texte `Erreur : l'option 6 n'existe pas` (si le choix de l'utilisateur est 6 par exemple) | ||||
| 
 | ||||
| ```admonish question | ||||
| 1. Que se passe-t-il lorsque l'utilisateurice saisit une lettre au lieu d'un chiffre lors du choix de l'option ? Pourquoi à votre avis ? Nous ignorerons cette possibilité pour le moment, et verrons plus tard dans l'année comment le gérer. | ||||
| ``` | ||||
| 
 | ||||
| ### 6 - Ajouter une boucle | ||||
| 
 | ||||
| **Objectif :** Le programme doit pouvoir être répété autant que l'utilisateur le veut. | ||||
| 
 | ||||
| ```admonish tip title="Quelle boucle utiliser ?" | ||||
| - La boucle `for` s'utilise pour un nombre connu d'itérations | ||||
| - La boucle `while` s'utilise pour un nombre non défini à l'avance d'itérations | ||||
| ``` | ||||
| 
 | ||||
| ```admonish warning title="Gestion de la pause" | ||||
| Si le choix de l'utilisateurice est différent de zéro (pour quitter), il faut avoir le temps de lire avant de réafficher le menu.  | ||||
| 
 | ||||
| Pour cela on peut demander une entrée (avec `input`) à l'utilisateurice, mais ignorer sa saisie. On peut alors simplement lui proposer d'appuyer sur Entrée. Une fois la saisie effectuée, on pourra alors reboucler. | ||||
| ``` | ||||
| 
 | ||||
| ```admonish question | ||||
| 1. Quelle boucle sera la plus adaptée ? Pourquoi ? | ||||
| 2. Comment éviter de déclencher la pause lorsque l'utilisateurice souhaite quitter le programme ? | ||||
| ``` | ||||
| 
 | ||||
| ## Validation | ||||
| 
 | ||||
| ### Checklist | ||||
| 
 | ||||
| - [ ] Le programme se lance sans erreur | ||||
| - [ ] Le titre s'affiche correctement | ||||
| - [ ] Toutes les options s'affichent | ||||
| - [ ] La saisie utilisateur fonctionne | ||||
| - [ ] Chaque option affcihe le bon message | ||||
| - [ ] Un choix (nombre entier) invalide affiche une erreur claire | ||||
| - [ ] Le code est propre, les variables sont correctement nommées et avec des noms compréhensibles | ||||
| 
 | ||||
| ### Critères d'évaluation | ||||
| 
 | ||||
| - Le programme fonctionne correctement | ||||
| - Le code est propre : nommage des variables, lisibilité | ||||
| - Documentation : commentaires pertinents | ||||
| - Réponse aux questions dans le compte-rendu | ||||
| 
 | ||||
| ## Pour aller plus loin | ||||
| ### Bonus - Améliorations | ||||
| - Personnaliser le titre avec votre nom | ||||
| - Améliorer le texte des options et les messages | ||||
| - Amélioration de la présentation du menu | ||||
| 
 | ||||
| ### Bonus difficile - Utiliser l'instruction `match` | ||||
| 
 | ||||
| ```admonish warning title='Attention' | ||||
| Cette question n'est à faire **que si le reste du TP est terminé**. Elle demande plus d'autonomie et est beaucoup moins guidée. | ||||
| Si vous n'êtes pas très à l'aise avec Python ou la programmation il vaut mieux se concentrer sur le reste et bien comprendre. | ||||
| 
 | ||||
| Cette section n'est pas nécessaire à la bonne exécution du TP ni des séances suivantes. On peut terminer sans la faire.  | ||||
| 
 | ||||
| **Faites une copie de votre code dans un nouveau fichier avant toute modification afin de pouvoir revenir en arrière au prochain TP si vous ne terminez pas cette question.** | ||||
| ``` | ||||
| 
 | ||||
| **Objectif :** Utiliser la documentation Python pour remplacer les conditions du menu par la structure `match`. | ||||
| 
 | ||||
| ```admonish tip title="A utiliser" | ||||
| - Utiliser la documentation officielle de Python pour comprendre la structure `match` : [Documentation](https://docs.python.org/3/tutorial/controlflow.html#match-statements) | ||||
| - Utiliser la structure match pour remplacer la suite de conditions | ||||
| ``` | ||||
| 
 | ||||
| ```admonish question | ||||
| - Comment gérer les cas non prévus dans le menu (ce que faisait le `else`) avec `match` ? | ||||
| ``` | ||||
| Before Width: | Height: | Size: 15 KiB | 
| Before Width: | Height: | Size: 4.1 KiB | 
| Before Width: | Height: | Size: 7.4 KiB | 
| Before Width: | Height: | Size: 16 KiB | 
| Before Width: | Height: | Size: 104 KiB | 
| Before Width: | Height: | Size: 31 KiB | 
| Before Width: | Height: | Size: 36 KiB | 
| Before Width: | Height: | Size: 49 KiB | 
| Before Width: | Height: | Size: 24 KiB | 
| Before Width: | Height: | Size: 64 KiB | 
| Before Width: | Height: | Size: 10 KiB |