Guide de l'IDEâïž
Exempleâïž
Un IDE se présente sous cette forme :
Enroulez-moi !
A
Remarque sur la solution
C'est simple mais il faut ĂȘtre vigilant.
Une autre remarque est possible
Toujours simple mais toujours vigilant.
Z
Il dispose de six boutons :
- Lancer le script :
- Valider le script avec des tests unitaires :
- Télécharger le script actuel :
- Téléverser un script local :
- Recharger l'énoncé :
- Enregistrer le script actuel :
Rappel RGPD
Tout se fait du cÎté client. Rien n'est envoyé au serveur.
Prise en mainâïž
Par défaut, la commande {{IDE('exo2')}}
permet de charger un script placé dans docs/scripts/
.
Organisations possibles
Votre page markdown
constitue un chapitre et regroupe de nombreux exercices avec de nombreux IDE.
Dans ce cas, optez pour l'arborescence suivante :
docs/
âââ images
â  âââ projet2
â   âââ plante.png
âââ index.md
âââ projet1.md
âââ projet2.md âŹ
ïž corps du chapitre que vous souhaitez Ă©crire
âââ projet3.md
âââ scripts
â  âââ projet2 âŹ
ïž dossier contenant les exercices Ă intĂ©grer Ă vos IDE
â  â  âââ exo1.py
â  â  âââ exo1_corr.py
â  â  âââ exo1_test.py
â  â  âââ exo2.py
â  â  âââ exo2_corr.py
â  â  âââ exo2_test.py
â  â  âââ exo3.py
â  â  âââ exo3_corr.py
â  â  âââ exo3_test.py
â  â  âââ exo4.py
â  â  âââ exo4_corr.py
â  â  âââ exo4_test.py
â  â  âââ exo5.py
â  â  âââ exo5_corr.py
â  â  âââ plante_fractale.py
â  â  âââ tableau_dynamique.py
......
Exemple :
{{IDE('projet2/exo2')}}
chargera le script exo2.py depuis docs/scripts/projet2/
.
Votre page markdown
est spécialisée sur un exercice particulier, indiqué dans mkdocs.yml
.
Dans ce cas, optez pour l'arborescence ci-dessous :
docs/
âââ N1
â  âââ 110-maximum_nombres
â  â  âââ exo.py
â  â  âââ exo_corr.py
â  â  âââ exo_test.py
â  â  âââ sujet.md
Exemple :
mkdocs.yml
contient la ligne- "Calcul de max": N1/110-maximum_nombres/sujet.md
.{{IDE('exo')}}
chargera le script exo.py depuisdocs/N1/110-maximum_nombres/
.
Format de fichiers
Le script Python est écrit de maniÚre classique avec quelques particularités.
Il peut se décomposer en ces éléments (tous facultatifs) :
#MAX Nombre_d_essais_autorisés
#--- HDR ---#
"""
Code Python dans un header
Ce code ne sera pas visible par l'élÚve et sera exécuté avant le code élÚve à l'exécution et à la validation
Utile pour proposer des classes spécifiques à un exercice
"""
#--- HDR ---#
"""
Code élÚve à compléter
"""
#Tests
"""
Tests publics faits à l'exécution et à la validation
Exemple: assert machin == 0, "vous avez une erreur de machin"
"""
Les librairies standards sont pour la plupart acceptées, les limitations étant principalement graphiques. Les annotations de type, le walrus opérator sont acceptées.
Le fichier Python de correction s'appelle nom_de_script_corr.py
.
Vous pouvez répéter le HDR si vous le souhaitez afin que l'élÚve puisse tester en local
1 2 |
|
Le fichier de juge en ligne peut ĂȘtre Ă©crit de maniĂšre beaucoup plus "classique" en utilisant assert
:
1 2 3 |
|
Les assert
sont directement évalués par Pyodide. Seul le test ayant échoué sera affiché. Les tests réussis n'afficheront rien.
Pas de problÚme pour tester autant de fonctions que nécessaire.
Le fichier de juge en ligne doit contenir une variable appelée benchmark
, de type list
ou tuple
:
1) Si l'on souhaite vérifier une unique fonction grùce à l'évaluateur de code :
1 |
|
On a donc un tuple de chaßnes de caractÚres qui sera évalué avec eval()
.
2) Si l'on souhaite vérifier plusieurs fonctions grùce à l'évaluateur de code :
1 2 |
|
On a donc un tuple de tableau de chaßnes de caractÚres qui sera évalué avec eval()
.
Options
Lors de l'appel à un IDE dans le fichier .md, il est possible de spécifier plusieurs options telles :
{{IDE("fichier1.py", MAX = 5, SANS = "sort, exec", SIZE = 14)}}
ou
{{IDE("fichier2.py", MAX = "+")}}
- MAX : indique le nombre maximum d'essais autorisés pour résoudre un exercice avant révélation de la solution (1000 ou "+" pour infini). Par défaut : 5.
- SANS : exclu des instructions Python (builtins ou non). Par défaut : "exec, eval".
- SIZE : donne la taille maximale d'un IDE. Si le script est plus petit, la taille rĂ©elle s'adaptera au plus petit. Un script Python plus long que SIZE sera tout de mĂȘme visible Ă l'aide des sliders. Par dĂ©faut : 20.
Important
Le bouton de validation du script à l'aide de tests unitaires est présent uniquement si vous fournissez un fichier nom_du_fichier_test.py
prĂ©sent dans le mĂȘme rĂ©pertoire que nom_du_fichier.py
.
La solution apparait au bout du nombre de tests unitaires définis dans le fichier ou directement dans la création de l'IDE seulement si vous fournissez un fichier nom_du_fichier_corr.py
dans le mĂȘme rĂ©pertoire que nom_du_fichier.py
.
Les boutons de lancement du script, de téléchargement, de téléversement, de sauvegarde et de rechargement sont présents par défaut.
Conclusion
Ă condition que les fichiers fichier.py
, fichier_corr.py
et fichier_test.py
soient présents, {{IDE('foo/bar/truc/muche/fichier')}}
gĂšre tout seul :
- l'énoncé,
- le juge en ligne,
- les fichiers de correction