En programmation, les commentaires sont des portions du code source ignorées par le compilateur ou l’interpréteur, car ils ne sont pas nécessaires à l’exécution du programme.
On commente un code source en Python pour en simplifier sa lisibilité, et gagner du temps dans la ré-utilisation de parties de code sur lesquelles on a déjà travaillé.
En Python le caractère # débute un commentaire.
Le code suivant est bien documenté. Essayez-le, analysez-le. Ensuite créez un fichier damier.py avec 100 cases bleues et jaunes de 45 pixels de largeur.
Code Python traduit en HTML:#L'échiquier version 1.0.0
#par wouf 11/2018
from turtle import *
# Les variables globales :________________________________________________________________
nombre_colonnes=8
nombre_lignes=8
cote_en_pixels=40
# Les fonctions : _______________________________________________________________________
def dessin_carre(x,couleur="aucune" ): #cette fonction est documenté en dessous entre les triples cotes:
""" x est le coté du carré en pixel
Option : la couleur de remplissage est facultative..."""
les_couleurs=("blue" ,"red" ,"green" ,"yellow" ,"brown" ,"black" ,"white" ,"pink" ,"orange" ,"purple" ,"grey" )
#cette liste est une variable locale, non connue à l'exterieur de la fonction dessin_carre()
if couleur not in les_couleurs: #si la couleur est "aucune" ou une couleur non existante...
couleur="white"
fillcolor(couleur)
begin_fill()
for c in range(4):
forward(x)
right(90)
end_fill()
# Les paramètres pour turtle : __________________________________________________________
speed("fastest" )#vitesse maximum
shape("blank" ) #pour ne pas voir le curseur
title("Echiquier de Wouf" ) #Titre de la fenêtre
# Dessin de l echiquier ________________________________________________________________
for i in range(nombre_colonnes):
for j in range(nombre_lignes): #avez vous remarqué les 2 boucles imbriquées ?
#positionnement :
up()
goto(i*cote_en_pixels-320,j*cote_en_pixels-220) #où placer la tortue avant de faire la case (i,j) ?
down()
if (i+j)%2==0:
#Si la case est paire
#(X%Y est le reste de la division
#euclidienne de X par Y)
#On apllique la couleur foncée (remplissage)
dessin_carre(cote_en_pixels,"brown" )
else: #Sinon on a une case paire de couleur claire
dessin_carre(cote_en_pixels,"grey" )
Pour vous donner un exemple simple, je vous propose le code qui suit.
Un feu tricolore s'offre à vous et la possibilités d'utiliser 3 touches du clavier :
#Le feu tricolore version 1.0.0
#par wouf 11/2018
#Utilisez les touches r(rouge) o(orange) et v(vert) pour changer la couleur du feu
from turtle import *
# Les paramètres pour turtle : __________________________________________________________
speed("fastest" )#vitesse maximum
shape("blank" ) #pour ne pas voir le curseur
title("Feu tricolore de Wouf" ) #Titre de la fenêtre
def rouge(): #Le feu est rouge
up()
goto(50,-50)
down()
color("red" )
dot(80)
up()
goto(50,-150)
down()
color("black" )
dot(80)
up()
goto(50,-250)
down()
dot(80)
def orange(): #Le feu est orange
up()
goto(50,-50)
down()
color("black" )
dot(80)
up()
goto(50,-150)
down()
color("orange" )
dot(80)
up()
goto(50,-250)
down()
color("black" )
dot(80)
def vert(): #Le feu est vert
up()
goto(50,-50)
down()
color("black" )
dot(80)
up()
goto(50,-150)
down()
color("black" )
dot(80)
up()
goto(50,-250)
down()
color("green" )
dot(80)
#Dessin du feu : _______________________________________________________________
fillcolor("brown" )
begin_fill()
forward(100)
right(90)
forward(400)
right(90)
forward(100)
right(90)
forward(400)
right(90)
end_fill()
up()
goto(50,-50)
down()
dot(80)
up()
goto(50,-150)
down()
dot(80)
up()
goto(50,-250)
down()
dot(80)
# la tortue écoute les entrées au clavier (listen) et associe :
#à la touche r la fonction rouge()
#à la touche o la fonction orange()
#à la touche v la fonction vert()
if __name__ == "__main__" :
listen()
onkeypress(rouge,"r" )
onkeypress(orange,"o" )
onkeypress(vert,"v" )
mainloop()
feu_tricolore
Quand le feu est rouge il serait bien qu'un appui sur la touche r éteigne l'ampoule (idem pour orange et vert)
Pouvez vous faire ça ?
Votre mission est de créer (après certaines recherches) le visuel d'un jeu de puissance 4.
Pourquoi ne pas travailler en équipe ?
Les plus rapide peuvent réfléchir à l'interaction avec l'utilisateur...
Au cycle 4, les élèves s'initient à la programmation, en développant dans une démarche de projet quelques programmes simples, sans viser une connaissance experte et exhaustive d'un langage ou d'un logiciel particulier. En créant un programme, ils développent des méthodes de programmation, revisitent les notions de variables et de fonctions sous une forme différente, et s'entraînent au raisonnement.
Décomposer un problème en sous-problèmes afin de structurer un programme ; reconnaître des schémas. Écrire, mettre au point (tester, corriger) et exécuter un programme en réponse à un problème donné. Écrire un programme dans lequel des actions sont déclenchées par des événements extérieurs. Programmer des scripts se déroulant en parallèle. - Notions d'algorithme et de programme. - Notion de variable informatique. - Déclenchement d'une action par un événement, séquences d'instructions, boucles, instructions conditionnelles.
Jeux dans un labyrinthe, jeu de Pong, bataille navale, jeu de nim, tic tac toe. Réalisation de figure à l'aide d'un logiciel de programmation pour consolider les notions de longueur et d'angle. Initiation au chiffrement (Morse, chiffre de César, code ASCII...). Construction de tables de conjugaison, de pluriels, jeu du cadavre exquis... Calculs simples de calendrier. Calculs de répertoire (recherche, recherche inversée...). Calculs de fréquences d'apparition de chaque lettre dans un texte pour distinguer sa langue d'origine : français, anglais, italien, etc.
En 5e, les élèves s'initient à la programmation événementielle. Progressivement, ils développent de nouvelles compétences, en programmant des actions en parallèle, en utilisant la notion de variable informatique, en découvrant les boucles et les instructions conditionnelles qui complètent les structures de contrôle liées aux événements.
Blue-Bot est un robot autonome spécialement conçu pour une utilisation scolaire. Le robot : 125,00 €Pack 6 robots + station d'accueil : 759,00 €

Si vous enseignez avec un tableau blanc interactif (TBI), vous connaissez le dilemme : les logiciels fournis avec le tableau sont souvent propriétaires, lourds, et vos documents ne sont pas réutilisables ailleurs. Depuis plusieurs années, j'ai adopté une autre approche, entièrement libre — j'expliquais déjà en 2018 pourquoi le format vectoriel est le mieux adapté à un TBI — avec Sozi, un outil de présentation qui transforme un simple fichier SVG en présentation animée, lisible dans n'importe quel navigateur, sans installation côté classe.
Le seul point de friction, c'était la préparation du fichier SVG de départ : rassembler mes captures, mes schémas et mes décorations dans un seul document Inkscape, calque par calque, à la main. J'ai fini par écrire un petit script bash qui fait tout ça en une commande. Il est gratuit, open source, et je vous le partage dans cet article.
Sozi n'est pas un logiciel de diaporama classique. Au lieu d'enchaîner des diapositives, il définit des vues (zooms, rotations, translations) à l'intérieur d'un unique document SVG. Le résultat est un fichier HTML autonome qui s'ouvre dans Firefox ou Chrome, y compris sur le poste du TBI, sans dépendre du logiciel du fabricant.
Pour un usage TBI, c'est idéal : on prépare un grand « poster » vectoriel contenant tous les supports de la séance, puis on navigue de zone en zone au fil du cours. On peut zoomer sur un exercice, revenir à la consigne, afficher une correction… Le tout reste net à n'importe quel niveau de zoom, puisque c'est du vectoriel (et les images intégrées restent à leur résolution d'origine).
Mon flux de travail est simple. Je place dans un dossier toutes les ressources de ma séance : captures d'écran d'exercices (PNG, JPG), schémas ou figures déjà en SVG. J'ajoute éventuellement un sous-dossier deco/ contenant mes décorations récurrentes (cadres, flèches, mascotte, bandeau de titre…).
Le script parcourt ce dossier et génère un fichier SVG unique, conforme à Inkscape et à Sozi, dans lequel :
chaque image et chaque SVG devient un calque Inkscape nommé (d'après le nom du fichier), les fichiers de la racine forment les calques du bas, et le contenu de deco/ vient se superposer au-dessus. Il suffit ensuite d'ouvrir le résultat dans Inkscape, de déplacer et redimensionner chaque calque, puis de définir ses vues dans Sozi. La corvée de copier-coller a disparu.
Une première version naïve aurait pu se contenter de concaténer des balises <image>. Celle-ci va plus loin, avec quelques choix techniques qui font la différence au quotidien :
Intégrer un SVG dans un autre est plus délicat qu'il n'y paraît. Le script s'appuie sur un extracteur Python qui retire l'en-tête XML et le DOCTYPE, conserve la viewBox d'origine et ré-emballe le contenu dans une balise <svg> imbriquée avec preserveAspectRatio="xMidYMid meet". Vos figures gardent donc leurs proportions, même si elles ne sont pas au format 16/9.
Deux SVG exportés du même logiciel contiennent souvent les mêmes id (dégradés, filtres, marqueurs de flèches…). Quand on les fusionne, les références se mélangent et les rendus deviennent imprévisibles. Le script préfixe automatiquement les identifiants de chaque calque (calque1_, calque2_…) et réécrit les références internes (href, url(#…)) uniquement lorsqu'elles pointent vers un identifiant réellement défini dans le fichier. Les dégradés du calque 3 ne viendront jamais polluer le calque 7.
Les PNG et JPG sont intégrés directement dans le SVG en data URI. Le fichier produit est donc autonome : un seul fichier à copier sur la clé USB ou sur le réseau de l'établissement, aucune image cassée parce qu'un dossier a été déplacé.
Le script utilise set -euo pipefail, vérifie la présence des outils requis (base64, python3, find, sort), gère les dossiers vides, échappe les caractères XML dans les noms de calques, et trie les fichiers en ordre naturel : image2 passe bien avant image10. Un détail ? Pas quand on numérote ses captures d'exercices.
Aucune installation à proprement parler : c'est un script bash qui fonctionne sur toute distribution Linux disposant de python3 (et sous Windows via WSL). Récupérez-le depuis GitHub, rendez-le exécutable, et lancez-le depuis le dossier contenant vos images :
wget https://raw.githubusercontent.com/w0uf/sozi_conform.sh/main/sozi_conforme.sh chmod +x sozi_conforme.sh cd mon_dossier_de_seance /chemin/vers/sozi_conforme.sh
Le script produit un fichier resultats.svg prêt à ouvrir dans Inkscape. Tout est personnalisable par variables d'environnement, sans toucher au code :
WIDTH=1920 HEIGHT=1080 OUTPUT=seance-thales.svg TITLE="Théorème de Thalès" ./sozi_conforme.sh
WIDTH et HEIGHT définissent le canevas (1920 × 1080 par défaut, adapté aux TBI récents), OUTPUT le nom du fichier généré, et TITLE le titre du document — celui qui apparaîtra dans l'onglet du navigateur une fois la présentation exportée par Sozi.
Concrètement, préparer une séance ressemble à ceci : je rassemble mes captures et figures dans un dossier, je dépose mes décorations dans deco/, je lance le script, j'ouvre le SVG dans Inkscape pour arranger la mise en page (chaque élément étant sur son propre calque, c'est très confortable), puis j'ouvre l'éditeur Sozi pour définir l'enchaînement des vues. Le fichier HTML exporté par Sozi se lance ensuite sur n'importe quel poste équipé d'un navigateur. Ni le TBI ni les élèves n'ont besoin du moindre logiciel spécifique.
Le script sozi_conforme.sh est disponible gratuitement sur GitHub : github.com/w0uf/sozi_conform.sh. Il est publié sous licence libre : vous pouvez l'utiliser, le modifier et le redistribuer, en classe comme ailleurs. Si vous l'améliorez — prise en charge d'autres formats, options supplémentaires — les issues et pull requests sont les bienvenues, et les commentaires ci-dessous aussi.
Et si vous découvrez Sozi à cette occasion, foncez : c'est l'un de ces outils libres discrets qui changent réellement le quotidien d'un enseignant équipé d'un TBI.
lien vers l'article sur wouf blog
FullSync est un utilitaire de synchronisation et de sauvegarde de fichiers personnalisable. publié sous licence GNU GPL.
Plus d'information sur le blog