Académique Documents
Professionnel Documents
Culture Documents
MON COURS
VISUEL DE
PROGRAM\
MATION
SCRATCH ET PYTHON PAS-À-PAS
Traduit de l’anglais (Royaume-Uni) par
Christine Eberhardt
L’édition originale de cet ouvrage a été publiée en 2020
au Royaume-Uni par Dorling Kindersley sous le titre
Beginner’s Step-By-Step Coding Course
INTRODUCTION
6
Manipuler les données 30
PYTHON®
Qu’est-ce que Python ? 82 Les bibliothèques 104
Concepts
Chaque chapitre présente les concepts de
programmation de base du langage à l’aide
d’exemples de code pratiques que vous
pouvez tester pour mieux comprendre
le concept.
Projets
Les projets de cet ouvrage vont vous VOUS ALLEZ APPRENDRE
apprendre à créer des jeux, des
planificateurs et des applications. Chacun Durée : Indique le temps estimé
d’eux débute par un rapide aperçu de ce 1 heure pour réaliser un projet
que vous allez apprendre, de comment le
planifier et de quoi vous aurez besoin pour Lignes de code : 58 Indique le nombre de lignes
le créer. Des instructions simples de code estimé pour
Niveau de difficulté un projet. Ce nombre varie
étape-par-étape vous guident en
expliquant chaque caractéristique du code, selon l’éditeur de code
à l’aide d’annotations détaillées. utilisé
VOUS ALLEZ APPRENDRE
Cet encadré présente les concepts Indique le niveau de difficulté
utilisés dans le projet d’un projet, 1 étant le plus facile
1.2
Les projets sont découpés 1.1
en sections avec des étapes bien
définies afin de faciliter
l’apprentissage
disponible = 2500.00
budgets = {}
Icône « Enregistrer »
L’icône « Enregistrer » vous
rappelle à quel moment
vous devez sauvegarder
le programme au cours
du projet. ENREGISTRER
Trucs et astuces
La section Trucs et astuces en fin de projet
donne quelques astuces pour améliorer
Trucs et astuces
le code existant ou ajouter de nouvelles
fonctionnalités.
Centre de données
Un centre de données est similaire
à une installation informatique à
l’échelle industrielle. Ses nombreux
serveurs accessibles sur Internet
stockent des données ou exécutent
un logiciel « dans le cloud ». Le « cloud » Ordinateur de bureau
est un réseau mondial de serveurs qui Les ordinateurs sont largement
fournissent des services via Internet. utilisés dans les bureaux et
les foyers pour gérer les activités
administratives et créatives
Voiture comme la musique, le design,
Un logiciel peut être le traitement de texte, Machine à laver
utilisé pour contrôler les comptes, etc. De nombreux appareils ménagers
la vitesse, la température sont équipés de programmes.
ou la consommation Les cycles de lavage, la température
d’une voiture. Le système de l’eau et les programmations
de navigation nécessite d’une machine à laver, par exemple,
également sont gérés par un logiciel.
des programmes.
INTRODUCTION
Qu’est-ce que la programmation ? 8 9
Qu’est-ce qu’un programme ? Penser comme l’ordinateur
Un programme est un ensemble d’instructions Pour écrire un programme, il faut comprendre
qu’un ordinateur suit pour effectuer une tâche. comment l’ordinateur traite les instructions.
Les programmes peuvent être extrêmement Chaque tâche doit être décomposée. On ne
complexes. Microsoft Windows, par exemple, peut pas simplement demander à un robot de
se compose de millions de lignes d’instructions. « faire griller des toasts », par exemple. Il faut
programmer des instructions précises et
Les applications, comme détaillées pour chaque étape du processus.
les traitements de texte,
s’exécutent au-dessus
du système d’exploitation
Au lieu de répéter deux fois
Les systèmes d’exploitation, 1. Ouvrir la corbeille à pain la même instruction, il sera
comme Microsoft Windows 2. Prendre le pain plus rapide et plus simple
et Mac OS, gèrent le matériel 3. Ouvrir le sac de dire dans le programme :
et les logiciels « Répéter deux fois : prendre
4. Prendre une tranche
la tranche, l’insérer
5. L’insérer dans le grille-pain
Le firmware est un logiciel dans le grille-pain »
6. Prendre une tranche
intégré au matériel, comme
7. L’insérer dans le grille-pain
le BIOS (Basic Input/Output
System) 8. Enfoncer le bouton
9. Attendre que les toasts
sautent
Le matériel représente
les éléments physiques d’un
ordinateur, comme l’écran
Console de jeux
Les consoles telles que la
PlayStation de Sony, la Xbox
Appareil photo
de Microsoft et la Nintendo Switch
Sur les appareils photo
sont des ordinateurs conçus
d’aujourd’hui, c’est un
pour offrir une excellente
logiciel qui permet
expérience de jeu.
de changer les réglages,
de revoir les photos et de
les supprimer au besoin.
Matériel industriel
Les usines sont souvent fortement
automatisées. Les robots de chaînes
d’assemblage, les systèmes de contrôle
et de planification et les caméras de contrôle
de qualité sont tous équipés de logiciels.
Les langages
de programmation
Un langage de programmation est un ensemble de mots
et de symboles qui permet d’écrire des instructions
pour un ordinateur. Il faut parfois choisir entre la facilité
d’utilisation du langage et sa puissance.
Langages de haut et de bas niveaux langage peut s’exécuter sur différents matériels.
Les langages de programmation de haut niveau Les langages de bas niveau offrent un contrôle plus
n’exigent pas de connaître le matériel informatique. Ils pointu de l’ordinateur, mais ils exigent une
emploient souvent des mots proches du langage humain compréhension plus approfondie de son fonctionnement.
et gèrent automatiquement certaines fonctions de Les programmes écrits dans ces langages peuvent ne
l’ordinateur. Souvent, un programme écrit dans ce pas fonctionner sur d’autres matériels.
Instruction pour
LANGAGES DE HAUT NIVEAU afficher du texte
••Écriture assez rapide
••Facile à comprendre
••Rapidité d’exécution acceptable print("Bonjour!")
••Programmes compatibles avec
différents matériels Python
••Aucune connaissance informatique Langage populaire de haut niveau,
requise Python est facile à lire et à écrire.
Cette instruction affiche
« Bonjour ! » sur l’écran.
Nombre
hexadécimal,
un système d’écriture
en base 16 courant
en informatique
LANGAGES DE BAS NIVEAU
••Contrôle direct des fonctionnalités
matérielles MOV AX, 66H
••Vitesse d’exécution supérieure
avec du code bien écrit Assembleur
••Nécessite une bonne connaissance Ce langage est très proche
du matériel du code machine du processeur.
••Programme uniquement compatible Cet exemple prend un nombre
avec le même processeur ou un et le place dans l’accumulateur
processeur similaire du processeur.
INTRODUCTION
Les langages de programmation 10 11
Code machine Comment l’ordinateur comprend
Le code de bas niveau qui est directement reconnu un langage de programmation
par le matériel informatique et le processeur est Tous les programmes finissent sous forme de
appelé code machine, ou langage machine. C’est une code machine. La plupart sont écrits dans des
collection de chiffres binaires – 0 et 1 – que le langages conviviaux qui doivent être traduits en
processeur lit et interprète. Les instructions en code bits pour pouvoir être exécutés par un processeur.
machine se composent d’un nombre appelé opcode, Un interpréteur traduit et exécute les instructions
ou code opération, qui détermine la nature pendant l’exécution du programme, alors que les
de l’instruction, et d’un ou plusieurs opérandes, compilateurs traduisent le programme une fois
qui indiquent quelles données utiliser. pour toutes avant qu’il ne s’exécute.
Microprocesseur
Le microprocesseur est le
« cerveau » de l’ordinateur :
il contrôle la plupart
des opérations. Il exécute
01101000
les commandes et les 01101001
instructions de code machine.
00001101
00001010
CODE CONVERSION EXÉCUTION
CONVIVIAL EN INSTRUCTIONS DES INSTRUCTIONS
Exemple d’interface
Avec certains IDE, vous pouvez configurer
votre environnement de travail. Ici le
Débogueur pour programmeur parcourt les fichiers du projet
corriger les erreurs à gauche, écrit et modifie le code à droite
du programme et contrôle ses erreurs en bas.
Types de langages de programmation
De nombreuses philosophies ou paradigmes ont été utilisés pour concevoir
des langages de programmation. N’étant pas mutuellement exclusifs,
ils incarnent souvent différentes notions fondamentales. Ils peuvent aussi
être utilisés en fonction de l’approche choisie par le programmeur.
Python, par exemple, peut être utilisé en programmation orientée objet ou
procédurale. JavaScript peut être utilisé en programmation événementielle
ou orientée objet. L’approche et le langage choisis sont souvent une question
de préférence du programmeur. Voici quelques définitions et classements
des langages de programmation.
PROGRAMMATION
ÉVÉNEMENTIELLE Crée un bouton
En programmation événementielle, de page web
le programme surveille l’apparition d’un
événement puis démarre la séquence
d’instructions appropriée quand il se <input type="button" value="Cliquez ici!"
produit. Par exemple, un programme peut
réagir aux actions de l’utilisateur, à l’entrée onClick="showMessage();">
d’un capteur ou aux messages d’autres
systèmes informatiques. JavaScript et
Scratch (voir page 14), entre autres, peuvent
Un clic sur le bouton
être utilisés pour écrire des programmes Cette icône signale que la ligne
déclenche l’exécution des
orientés événements. de code a été coupée
instructions Javascript de
et continue sur une seconde ligne
showMessage()
INTRODUCTION
Les langages de programmation 12 13
CHOIX DU LANGAGE
Parfois, les programmeurs PYTHON SCRATCH
choisissent leur langage en fonction
Langage flexible dont le code est facile Parfait pour débuter, Scratch est
du matériel, de l’équipe avec laquelle à comprendre idéal pour les jeux simples.
ils programment ou du type
d’application qu’ils souhaitent créer.
JAVA JAVASCRIPT
Ils ont souvent le choix.
Largement utilisé dans la finance, les Utilisé pour l’interactivité
petits appareils et téléphones Android des pages web.
PROGRAMME PRINCIPAL
Données pour cet objet
Interfaces de communication
FONCTION 1
FONCTION 3
Programme Scratch
qui réagit lorsqu’on clique
sur un bouton
Fonctionnalités
Les fonctionnalités de Scratch en font
un langage idéal pour les débutants.
L’utilisation de blocs de code prêts
à l’emploi, en particulier, le distingue Com
de la plupart des autres langages. L e s u mu n a u
t
com tilisateu é
mun r s de
com
m ique Scra
peuv unauté r entre e tch peu
p ou e nt p ar S c ratch ux via u vent
r t n
avec que d’a ager leu intégrée e
u r
Ils p , les mod tres pui s progra . Ils
e s
en é uvent é ifier ou sent jou mmes
tudi g l
ant l alemen es remix er
es p
roje t appren er.
t s de d
s aut re
re s .
posé
Glissé-dé Scratch sont
de
Les blocs posés dans la
dé
glissés et é er
e d e co de pour cr très
zon e s. Il y a
mm
des progra pe, les utilisateurs
fr ap eptibles
peu de
nt do n c moins susc
so .
es erreurs
de faire d
sant
Langage puis à utiliser,
h es t faci le
Scratc
des concepts
mais applique
tiques à ceux
de base iden s.
professionnel
des langages nc
do
Il représente
troduction
une bonne in ion.
m at
à la program
Conceptio
n
Les blocs d en puzzle
’in
s’emboîten structions
t comme d
de puzzle, es
il n’est don pièces
possible de c pas
cr
combinaiso éer de mauvaises
n
logique so s. Les erreurs de
nt ainsi min
imisées.
SCRATCH
Qu’est-ce que Scratch ? 16 17
Apprendre à programmer avec Scratch de blocs de code colorés qui
Scratch a été créé par le groupe Lifelong s’assemblent pour former des scripts.
Kindergarten du Massachusetts Institute of Ces derniers peuvent intégrer des images
Technology (MIT) aux États-Unis en 2007. et du son pour créer une action à l’écran.
Scratch est ludique et très facile à utiliser pour Scratch fournit une plateforme très
débuter, c’est pourquoi il est largement utilisé dans performante (voir pages 18-19) pour
l’éducation. Son interface très visuelle se compose l’apprentissage de la programmation.
Support matériel
La dernière version de Scratch fonctionne avec
Windows, macOS, Linux et même sur tablette.
grées
Ressources inté ue Des extensions fournissent l’interaction avec
rat ch es t liv ré av ec une bibliothèq
Sc ma ge s
préinstallée de so
ns et d’i des périphériques matériels.
ir pages 20-21).
(appelés sprites, vo e
ga ge s n’offrent pas un
Les autres lan uven t cré er ou
t so
telle facilité, il fau
ages avant d’écrire Raspberry Pi
télécharger les im Scratch peut utiliser un Raspberry Pi pour
un program me .
se connecter à d’autres capteurs ou moteurs.
micro:bit
Scratch peut être utilisé avec un BBC micro:bit
doté d’un écran LED intégré, de boutons
et de capteurs d’inclinaison.
Lego®
Scratch peut se connecter à Lego® WeDo et Lego®
Mindstorms™ pour contrôler des moteurs,
capteurs et robots.
Webcam
Scratch est capable d’accéder à une webcam
pour superposer des images à un flux vidéo afin
de créer des applications en réalité augmentée.
OÙ TROUVER SCRATCH
Coda
g
L’environnement de développement Scratch est
Chaqu e par coul requis pour utiliser Scratch. Il est accessible
e
pour e bloc d’ins urs en ligne et hors ligne.
le t
le con mouveme ruction
t n
(entre rôle et la d t, le son,
é
une c autres) pos tection Dans votre navigateur
o s
identifi uleur facile ède Rendez-vous sur site Web Scratch
m
créatio able lors d ent https://scratch.mit.edu/ et cliquez sur
n d’un e la Rejoindre pour créer un compte.
progr
amme
.
Hors ligne
Vous pouvez télécharger Scratch
pour travailler hors ligne depuis le site
https://scratch.mit.edu/download.
L’interface de Scratch
C’est dans l’interface de Scratch que vous créez des programmes,
que vous les éditez et que vous en affichez le résultat. L’interface est
divisée en plusieurs sections, chacune ayant un objectif particulier.
Ce livre utilise Scratch 3.0 – la dernière version de Scratch.
Création d’un nouveau Cliquez sur l’onglet Son
projet, chargement Modification pour ajouter des effets
Comprendre l’interface Choix depuis ou enregistrement des projets sonores ou de la
L’interface de Scratch se compose des sections de la langue sur l’ordinateur existants musique aux sprites
suivantes :
•• Palette des blocs : elle contient les instructions,
SCRATCH Fichier Modifier Tutoriels
ou blocs de code, nécessaires pour construire
un programme Code Costumes Sons
•• Zone du code : c’est là que les blocs de code sont
assemblés pour créer un script Cliquez sur l’onglet
Mouvement Costumes pour
•• Scène : zone d’interaction de l’utilisateur avec Mouvement changer
le programme avancer de 10 pas l’apparence
•• Liste des sprites : affiche et gère toutes du sprite
les images, ou sprites, du programme Apparence
tourner 15 degrés
•• Info scène : gère les images d’arrière-plan
Son tourner 15 degrés
Événements
aller à position aléatoire
SCÈNE
PALETTE
ZONE Contrôle aller à x: 0 y: 0
DES
DE CODE
BLOCS
glisser en 1 secondes à position aléatoire
Capteurs
LISTE
DES SPRITES glisser en 1 secondes à x: 0 y: 0
Opérateurs
INFO SCÈNE
s’orienter à 90
Variables
VERSIONS DE SCRATCH s’orienter vers pointeur de souris
Mes blocs
Scratch existe actuellement en trois versions, Faites glisser les blocs
chacune avec une disposition d’écran différente. d’instructions dans la zone
de code et emboîtez-les
Les fonctionnalités et blocs d’instructions les plus
pour construire un programme
récents ne fonctionnent pas tous avec
Contient les blocs d’instruction
les versions antérieures.
disponibles
•• Scratch 1.4 : Interface similaire à celle
de Scratch 3.0, la zone de code s’appelait
l’espace des scripts
•• Scratch 2.0 : La scène se trouvait à gauche.
Introduction du clonage des sprites et Sac à dos
réorganisation de certains blocs d’événements.
Utilisez le bouton « Ajouter Stockez le code, les sprites, les costumes
•• Scratch 3.0 : Introduction des extensions et
une extension » pour ajouter et les sons intéressants dans le sac à dos
déplacement des blocs stylo dans ces derniers. de nouvelles catégories de pour les réutiliser dans d’autres projets
blocs à la palette des blocs
SCRATCH
L’interface de Scratch 18 19
répéter indéfiniment
Scène
Sprite Sprite1 x -90 y -10
Sprite 1 Cactus
Faites glisser les blocs d’instructions Le cadre bleu Cette fenêtre montre les sprites Ajout Choix de
dans la zone de code et emboîtez-les signale le sprite utilisés dans le programme. de nouveaux l’arrière-plan
pour créer le script d’un programme sélectionné Sélectionnez-en un pour afficher sprites au projet
son code dans l’espace code
Les sprites
Les sprites sont les composants de base de Scratch. Comme les personnages
d’un jeu vidéo, ils peuvent se déplacer sur la scène, changer d’apparence et
interagir avec d’autres sprites. Chaque sprite utilise une ou plusieurs images
et est contrôlé par des scripts.
Créer un sprite
Le bouton Choisir un sprite en bas à droite de la liste des sprites propose
des options pour ajouter, créer ou télécharger de nouveaux sprites
dans un projet.
Importer un sprite
Les utilisateurs peuvent Surprise
importer leurs propres images Scratch propose aussi d’ajouter
dans l’interface Scratch un sprite choisi au hasard dans
pour les utiliser comme sprites. la bibliothèque des sprites.
Cela inclut des photographies, Cela permet d’expérimenter
qui peuvent être utiles ou de générer de nouvelles
pour créer ou personnaliser idées de jeu.
des jeux.
1 Costume Costume1
Grouper Dégrouper Avancer Reculer Avant- Arrière-
plan plan
Convertir en bitmap
Exécution du programme
Un programme peut recevoir des informations de capteurs. La sortie peut être transmise à l’écran,
(l’« entrée »), les traiter, puis fournir un résultat à une imprimante ou à une autre interface.
(la « sortie »). Dans un jeu, l’entrée peut être les touches Dans Scratch, les instructions du programme sont
pressées par le joueur et la sortie le mouvement à construites à l’aide des blocs de code. Ces instructions
l’écran. L’entrée d’un programme peut provenir des s’exécutent toujours de haut en bas, sauf indication
utilisateurs, d’autres systèmes informatiques ou contraire.
Blocs de contrôle
Les blocs de contrôle sont utilisés pour choisir
ce qu’il faut faire ensuite. Ils indiquent aussi
combien de fois un ensemble de blocs doit se
répéter et quand le script doit s’arrêter.
Quand ce sprite est cliqué
Blocs d’événements
Ces blocs détectent si on clique
sur le drapeau vert, sur une touche
ou un sprite.
SCRATCH
Blocs de couleur et scripts 22 23
Utilisation de la palette Sélectionnez cet onglet pour commencer
Blocs de sortie
+ avancer de 10 pas
axe y
(ci-dessous) pour
0
sur la droite, et l’axe y passe de -180 en bas à 180 déplacer un sprite
à l’aide de
en haut. Quand vous créez un programme,
(x=–180, y=60) coordonnées.
ces coordonnées permettent de positionner
précisément un sprite sur la scène. (x=60 y=−120)
–180
Mettre x à 0 Abscisse x
aller à x: 0 y: 0
Change la composante x Affiche la valeur de x
Définit la position du sprite de la position Ce bloc ne produit pas de déplacement,
Fait sauter le sprite à un emplacement Déplace le sprite vers un il affiche la coordonnée x du sprite
particulier sur la scène. Les chiffres du bloc emplacement de coordonnée x, sans sélectionné. Déposez-le dans d’autres
peuvent être modifiés pour choisir d’autres changer sa coordonnée y. Le sprite blocs pour utiliser cette coordonnée
coordonnées. saute à cet emplacement. dans un script.
Ordonnée y
Glisser en 1 secondes à x: 0 y: 0 Ajouter 10 à y
Affiche la valeur de y
Déplace le sprite en un temps donné Modifie la composante y Ne déplace pas un sprite, mais affiche sa
Ce bloc fait glisser le sprite de la position coordonnée y. Il peut également être
à un emplacement donné. Vous spécifiez Change la valeur de y par utilisé avec d’autres blocs. Par exemple,
la durée en secondes du mouvement le nombre saisi dans le bloc, on peut demander à un sprite d’indiquer
dans la zone d’entrée. sans changer x. sa coordonnée y (voir page 26).
SCRATCH
Le déplacement des sprites 24 25
0
Déplacer des sprites à l’aide des directions
-45 45
Dans Scratch, chaque position sur la scène correspond à un pas. Pour
déplacer un sprite, il faut lui donner une direction puis le faire avancer. -90 90
La direction 90 degrés orientera le visage d’un sprite vers la droite.
C’est la direction par défaut pour la plupart des sprites. -135 135
180
Tourner de 15 degrés
S’orienter à 90
Faire pivoter un sprite dans le sens
des aiguilles d’une montre Change la direction du sprite
Change la direction du sprite de 15 degrés dans le sens des Définit la direction du sprite. Un nombre entre 0
aiguilles d’une montre. Comme pour tous les blocs qui et 180 oriente dans le sens des aiguilles d’une montre,
acceptent une entrée, le nombre de degrés peut être modifié. entre 0 et — 180 il oriente dans l’autre sens.
Le sprite se positionne
au départ sans tracer
de ligne
Basculer sur le costume costume1 Mettre la taille à 100 % de la taille initiale Cacher
BLOCS DE MUSIQUE
Les blocs de musique dans Scratch doivent
mettre le tempo à 120
être ajoutés à l’aide du bouton Ajouter
une extension, en bas à gauche de la palette choisir l’instrument n° (20) Lead synthétisé
des blocs. Ils permettent aux programmeurs
de jouer de la musique. Il n’est pas nécessaire jouer la note 60 pendant 0.25 temps
de connaître le numéro de chaque note.
Un clavier de piano s’affiche dès que jouer la note 62 pendant 0.25 temps
vous cliquez sur ce numéro et vous choisissez
la note. jouer la note 64 pendant 0.25 temps
Diffuser du son Jouer le son Miaou jusqu’au bout Ajouter 10 à l’effet hauteur
Les sons sont un excellent
moyen de fournir des Met le script en pause pour diffuser le son Change la hauteur
Définit un son à diffuser, puis interrompt Modifie la hauteur d’un effet sonore.
commentaires dans un jeu le script jusqu’à ce qu’il soit terminé. Le choix Les nombres positifs l’augmentent alors que
ou de déclencher du son se fait dans la liste déroulante. les nombres négatifs la réduisent. Le menu
une alerte dans un propose aussi le réglage stéréo.
programme. Pour qu’un
son puisse être utilisé, jouer le son Miaou Mettre l’effet hauteur à 100
il doit être ajouté au sprite
Diffuse le son en arrière-plan Réinitialisation de la hauteur
à partir du bouton Choisir Diffuse un son en arrière-plan pendant Réinitialise la hauteur ou la rétablit à la valeur
un son sous l’onglet Sons. que le script s’exécute. spécifiée par le programmeur. Ce bloc peut
aussi régler la stéréo gauche/droite.
Les sons proviennent de
la bibliothèque de Scratch
ou sont enregistrés ou Arrêter tous les sons Annuler tous les effets sonores
téléchargés. Stoppe la diffusion de tous les sons Supprime les effets sonores
Ce bloc arrête tous les sons, Ce bloc réinitialise tous les effets sonores
quel que soit leur nombre ou le sprite précédemment appliqués sur des sprites
qui les a démarrés. ou arrière-plans.
Gérer le déroulement
du programme
Les programmeurs doivent non seulement dire à l’ordinateur ce qu’il faut faire,
mais aussi quand le faire. Dans Scratch, les blocs de contrôle et d’événements
sont utilisés pour indiquer quand une instruction doit être exécutée.
Programmation événementielle
En programmation événementielle, les actions du programme sont
déclenchées par des événements tels qu’une manipulation de l’utilisateur Quand est cliqué
ou une alerte d’un capteur (voir pages 34-35), ou par des messages envoyés
par d’autres programmes ou parties du programme. La section Événements Démarrage avec le drapeau vert
Simplifie le démarrage du programme par
de la palette des blocs propose des blocs pour démarrer des scripts lorsque l’utilisateur. Des copies de ce bloc peuvent
quelque chose se produit. Ces blocs fournissent de nombreuses façons de être utilisées pour démarrer plusieurs
commencer les scripts autrement qu’en cliquant sur eux. scripts simultanément.
Quand ce sprite est cliqué Quand le volume sonore > 10 Quand je reçois message1
Démarrage avec un clic de souris Démarrage avec le son Démarrage avec un message
Ce bloc lance le script associé lorsqu’un sprite Le script est activé dès que le microphone Les scripts peuvent s’envoyer des messages
est cliqué. Il est parfait pour créer des boutons à détecte un volume supérieur à 10 (sur une les uns aux autres (voir pages 36-37). Ce bloc
l’écran sur lesquels les utilisateurs vont cliquer. échelle de 0 à 100). démarre un script à la réception d’un
message particulier.
Quand la touche espace est pressée Quand l’arrière-plan bascule sur Arrière-plan1
Les variables
De nombreux langages de programmation utilisent Les chaînes de caractères
des variables pour stocker des informations. Une Un extrait de texte dans un programme s’appelle
variable peut stocker soit du texte, soit un nombre. une « chaîne de caractères ». Elle peut stocker
Dans un jeu, par exemple, deux variables peuvent un nom, par exemple, la réponse à une question
être utilisées pour stocker le nom et le score du joueur. ou une phrase entière. Dans Scratch, n’importe
Créer une variable quelle variable peut stocker un nombre
1 Pour créer une variable dans Scratch, sélectionnez Variables ou une chaîne, et sa valeur peut changer.
dans la palette des blocs et cliquez sur le bouton Créer une variable.
Donnez-lui un nom significatif, tel que score, pour simplifier
regrouper pomme et banane
la lecture du code. La plupart du temps, les variables sont créées
pour tous les sprites, ce qui signifie que tous les sprites peuvent voir Regrouper des chaînes de caractères
et modifier la variable. Ce bloc permet de regrouper deux chaînes, sans espace,
de sorte que le résultat pour cet exemple sera
« pommebanane ». Des blocs de variables peuvent également
Créer une variable être utilisés plutôt que de saisir des mots dans un bloc.
LISTES
Une liste permet de stocker des informations similaires, telles
qu’une liste de noms. Dans Scratch, vous créez une liste à partir
de la section Variables de la palette des blocs. Vous insérez et
supprimez des éléments dans la liste en indiquant leur
position. Par exemple, le bloc supprimer l’élément 2 de [nom
de liste] va supprimer le deuxième élément de la liste.
Créer un enregistreur
du meilleur score si score > meilleur score alors
Ce script vérifie si le score du joueur
est supérieur au meilleur score. mettre meilleur score à score
Si c’est le cas, la variable meilleur Ces blocs ne
score est modifiée avec le score dire Nouveau meilleur score pendant 2 secondes s’exécutent que si
du joueur. la variable score
est supérieure
à meilleur score
dire Vous n’avez pas atteint le meilleur score cette fois-ci ! pendant 2 secondes
Expressions booléennes
15 < 50
Utilisée pour prendre des
décisions dans les programmes,
une expression booléenne vrai
renvoie une valeur qui est
« vraie » ou « fausse ». Le bloc
15 > 50
de l’opérateur <, par exemple,
vérifie si le nombre à gauche est
inférieur à celui de droite. faux
Logique
et décisions
Les programmes seront plus souples et réactifs
s’ils sont codés pour prendre des décisions.
Ils peuvent se servir de variables pour contrôler
l’instruction à exécuter et quand l’exécuter.
SCRATCH
Logique et décisions 32 33
Combiner des expressions
Vous pouvez combiner les expressions booléennes
pour prendre des décisions fondées sur plusieurs facteurs.
Voici quelques exemples avec le bloc de détection de l’année
en cours. Son menu permet de choisir d’autres unités de temps.
Le bloc ET
Le bloc et comporte deux emplacements pour des expressions booléennes,
et il vérifie si les deux expressions sont vraies. Dans cet exemple, le programme
vérifie le mois et la date pour afficher un message spécial pour la Saint-Valentin.
Le bloc NON
Le bloc non permet d’exécuter des instructions si non mois actuelle = 12 alors
si une expression n’est pas vraie. Cet exemple
montre comment afficher un message si le mois dire Il est trop tôt pour parler de Noël pendant 2 secondes
n’est pas décembre.
répéter indéfiniment
Affiche un message
attendre nombre aléatoire entre 1 et 3 quand le chat est
glisser en 0.5 secondes à Sprite1 touché
quand je reçois ouch
MESSAGES SENSIBLES
Le nom par défaut d’un message diffusé
dans Scratch est message1, mais vous pouvez
le changer. Pour simplifier la lecture du
programme, il est conseillé de choisir quelque
chose de pertinent. Vous pouvez saisir
un nouveau nom dans le menu des blocs
de diffusion.
LE SCRIPT
PRINCIPAL
S’ÉXECUTE
D’AUTRES SCRIPTS
PEUVENT UTILISER
LA FONCTION
À TOUT MOMENT
LE SCRIPT
APPELLE LA
FONCTION
LA FONCTION
INTERROMPT
L’EXÉCUTION
QUAND LA
FONCTION SE
TERMINE, LE SCRIPT
PRINCIPAL REPREND
L’EXÉCUTION AU
BLOC SUIVANT
SCRATCH
Utiliser les fonctions 38 39
Définir ses propres blocs
Avec Scratch, créez vos propres blocs pour éviter une fonction pour dessiner un triangle, puis
de répéter plusieurs fois le même code. Chaque l’utiliser pour dessiner des triangles de trois tailles
bloc peut être composé de plusieurs instructions. différentes, empilés les uns sur les autres.
L’exemple ci-dessous illustre comment créer Le résultat final ressemble à un sapin.
Mes blocs
dessiner un triangle de taille longueur
Créer un bloc Bouton pour créer
un nouveau bloc
effacer tout
stylo en position d’écriture Les blocs stylo
se trouvent dans mettre la couleur du stylo à Sélectionnez
la section Ajouter une couleur
répéter 3 fois
une extension verte ici
aller à x: −75 y: −140
avancer de de la palette des blocs
longueur pas
dessiner un triangle de taille 150
tourner de 120 degrés
aller à x: −50 y: −10 100 est la valeur
de la variable
Rotation au sommet
dessiner un triangle de taille 100 longueur
Presque tous les langages de programmation utilisent des • Il est plus facile de créer et tester de multiples
fonctions. Voici quelques-uns de leurs avantages : petites fonctions qu’un gros programme.
• Une fonction peut être réutilisée dans d’autres L’exemple ci-dessus serait plus long, plus
programmes. compliqué et plus difficile à lire si chaque instance
• Si son nom est significatif, le programme est plus facile à lire. de « dessiner un triangle » était remplacée par tous
• Quand vous réutilisez des fonctions, le programme est plus les blocs de la fonction.
court.
Traducteur de voyage
Les applications de traduction sont très pratiques pour communiquer
quand on est à l’étranger. Ce projet, conçu à partir d’une extension
de Scratch, va créer un traducteur de texte simple. Il pourra traduire
n’importe quel texte dans des dizaines de langues différentes.
Vous pouvez
choisir n’importe
quel sprite dans
la bibliothèque
Conception du programme
Les programmeurs utilisent souvent des
organigrammes – représentation graphique DÉBUT
d’un algorithme – pour structurer leurs
programmes. Chaque étape est présentée
avec une flèche menant à l’étape suivante.
Une étape peut mener à plusieurs autres
étapes, selon le résultat d’un traitement. Attend le choix
de la langue
par l’utilisateur
BOUTON BOUTON
FRANÇAIS BOUTON RUSSE
ALLEMAND
PRESSÉ PRESSÉ PRESSÉ
Récupère la phrase
à traduire
Traduit la phrase
dans la langue choisie
Affiche la traduction
Configuration de la scène
1 Pour commencer, vous devez créer
1.1 DÉMARRER UN NOUVEAU PROJET
Choisissez Nouveau dans le menu Fichier
un compte sur Scratch en cliquant sur en haut à gauche de l’interface Scratch. Cela crée un tout
nouveau projet vierge.
« Rejoindre », puis créer un nouveau projet,
et ajouter le sprite et l’arrière-plan nécessaires
à l’application. Vous pouvez ensuite Fichier Modifier Tutoriels
construire le code en emboîtant des blocs Nouveau Cliquez ici pour démarrer
colorés. un nouveau projet
Enregistrer maintenant
Devin
Choisir un sprite
Dire réponse
CONFIGURATION DE LA SCÈNE
1.6 TESTEZ
Exécutez le code et observez ce qui se passe. Cliquez sur le
drapeau vert dans le coin supérieur gauche de la scène pour lancer Devin va dire
l’exécution, le panneau rouge à côté arrêtera le code. la phrase que vous
avez saisie
Test en cours…
Le nouveau
sprite apparaît
dans la liste
Devin Anglais des sprites
SCRATCH
Traducteur de voyage 44 45
2.2 CHANGEZ LE COSTUME DU SPRITE BOUTON
Vous pouvez changer l’aspect d’un sprite en changeant sélectionné. Cliquez sur l’icône de l’outil Texte, à gauche,
son costume. Sélectionnez le sprite puis cliquez sur l’onglet cliquez à l’intérieur du bouton puis saisissez « Anglais ».
Costumes en haut à gauche de l’interface. Vous vous trouvez Cela crée une étiquette. Ajustez éventuellement la police
dans l’éditeur de dessin de Scratch avec lequel vous pouvez ou la couleur du texte à l’aide du menu déroulant
dessiner vos propres costumes ou modifier celui du sprite ou de l’option Remplissage au-dessus.
Costume button2-a
1 Grouper Dégrouper Avancer
Outil Texte
button2-b
121 x 54
Anglais
Tous les
costumes d’un
sprite sont
affichés ici
Centrez le texte
sur le bouton
Convertir en bitmap
Événements
Ce bloc traduit une
langue dans une autre
Contrôle
Capteurs
Opérateurs
Variables
Traduire
Cliquez ici pour ouvrir
les extensions de Scratch
SCRATCH
Traducteur de voyage 46 47
EXTENSIONS
Les extensions permettent aux projets de Makey Makey
communiquer avec du matériel ou un logiciel extérieur Cette extension permet de connecter
des objets du quotidien à votre ordinateur.
à l’environnement de Scratch. La sélection d’une Vous pouvez ainsi contrôler vos jeux à l’aide
extension ajoute de nouveaux blocs dans la palette. d’objets connectés.
Musique micro:bit
Utilisez cette extension pour faire de Le micro:bit est un gadget de la taille
la musique à l’aide de divers d’une main que vous pouvez contrôler
instruments et des sons de batterie. avec les blocs de cette extension.
2.7 TESTEZ
Testez le code. Appuyez
sur le bouton Anglais, puis cliquez
sur l’indicateur vert pour exécuter
le projet. Ensuite, tapez une phrase
que vous souhaitez traduire Langue choisie Anglais
et cliquez sur l’icône de coche
pour la valider.
BUENOS DIAS
SCRATCH
Traducteur de voyage 50 51
Trucs et astuces
Multilingue
Créez des boutons et blocs de code supplémentaires
Traduire bonjour en Français
afin de traduire dans d’autres langues. Les blocs
de traduction de Scratch proposent des dizaines
de langues différentes. Lesquelles souhaiteriez-vous
Ouvrez la liste Albanian
déroulante pour
ajouter ? choisir une langue
Arabic
Armenian
Phrases courantes
« Bonjour », « Comment allez-
vous ? », « Combien est-ce ? » : Quand est cliqué
ces phrases sont utiles partout
dans le monde. Adaptez votre
code et utilisez les blocs Traduire dire traduire bonjour en Langue choisie
afin d’afficher leurs traductions
sans qu’il soit nécessaire de
les taper. Vous pourriez ajouter
des boutons dédiés. Ajoutez la phrase à traduire ici
Dites-le
Une autre extension Scratch appelée « Synthèse Texte à prononcer
vocale » peut être utilisée pour lire le texte à voix haute.
Modifiez votre code afin de proposer la lecture
des phrases. Vous pourrez ensuite écouter
prononcer bonjour
et apprendre à prononcer les mots.
Cela permettra
si Langue choisie = Français alors de lire la traduction
à haute voix
choisir la voix du ténor Sélectionner une voix pour votre sprite
dans le menu déroulant
Cliquez ici
pour démarrer
le programme
Cliquez sur
le bateau pour
le faire traverser
Conception du programme
Le programme attend que l’utilisateur sélectionne DÉBUT
un sprite. Dès que la sélection est effectuée et que
l’utilisateur tente de faire traverser le sprite,
le programme vérifie si l’une des règles a été
enfreinte à l’aide d’une boucle continue. Si c’est le
cas, le jeu est terminé. Si l’utilisateur parvient à
faire traverser tous les sprites, le jeu est résolu.
Placer tous les sprites sur le
bord gauche de la rivière
UN SPRITE
TRAVERSE
LA RIVIÈRE
OUI
Une règle a-t-elle été
Fin du jeu
enfreinte ?
NON
Démarrage du projet
1 On commence généralement un projet en
choisissant des sprites et des arrière-plans dans la
bibliothèque de Scratch. Dans ce projet, vous allez
créer votre propre arrière-plan et même un sprite à
l’aide de l’éditeur de dessin. Vous allez ensuite
ajouter du code pour déplacer le sprite sur l’écran.
1.1 DÉMARREZ UN
NOUVEAU PROJET Vous pouvez aussi cliquer
Créez un nouveau projet et sur cette icône pour
supprimez le sprite Cat par défaut : supprimer le sprite
cliquez-droit dessus dans la liste
des sprites et choisissez « supprimer ». dupliquer
Sprite1
exporter
Sélectionnez cette
option dans le menu
supprimer
déroulant
Costume Arrière-plan1
1 Grouper Dégrouper
Remplissage Contour 4
Copier Coller
Arrière-plan1
Arrière-plans 2x2
1
Costume Arrière-plan1
1
Augmentez ou réduisez
cette valeur pour régler
Remplissage 10 la largeur de trait du pinceau
Arrière-plan1
239 x 360
Sélectionnez le noir
dans la palette
L’outil Pinceau des couleurs
permet de tracer
des lignes à main
levée
Convertir en vecteur
1.4 REMPLISSEZ
Colorez ensuite chaque section
de l’arrière-plan à l’aide de l’outil
Remplissage. Cliquez sur l’icône
Remplissage (elle ressemble à un pot de
peinture), puis choisissez une couleur dans OUTIL
le menu Remplissage en haut à gauche de REMPLISSAGE
l’éditeur de dessin. Cliquez simplement
dans une section pour la remplir.
Costume costume1
Remplissage
Convertir en vecteur
Le bateau est
actuellement à l’arrêt
Le bateau doit
se positionner sur le bord
gauche de la rivière
DÉMARRAGE DU PROJET
Ce script s’exécutera
lorsque l’utilisateur cliquera
Quand ce sprite est cliqué sur le bateau
Le bateau se déplace,
mettre bateau en mouvement à vrai
il faut donc définir cette
variable vraie
Si bateau sur rive = gauche alors
sinon
Le sprite sélectionné
apparaît en bleu
Le sprite Lion
apparaît à l’écran
dans la taille définie
AJOUT D’UN NOUVEAU SPRITE
bateau en mouvement
2.4 EMBARQUEZ
Lorsque l’utilisateur
clique sur le lion, il doit se déplacer
dans le bateau. Ajoutez ce code
puis cliquez sur le drapeau vert
pour tester. Quand ce sprite est cliqué
Ces blocs ne sont exécutés
que si le bateau est vide. Cela évite si capacité du bateau = vide alors
d’ajouter plus d’un sprite en même
temps dans le bateau
aller à Bateau Déplace le lion
dans le bateau
Ce bloc se trouve dans la section aller à l’avant-plan
Apparence de la palette Le bateau
des blocs. Il permet d’afficher mettre capacité du bateau à plein est plein
le lion devant le bateau
mettre lion à bord à vrai
Cette boucle ne
si lion à bord = vrai alors
s’exécute que si le lion
est sur le bateau
répéter jusqu’à ce que bateau en mouvement = faux
aller à Bateau
aller à Bateau
répéter
bateau en mouvement = faux
jusqu’à ce que
aller à Bateau
aller à Bateau
aller à Bateau
sinon
Trucs et astuces
Concevez votre propre scénario
Utilisez l’éditeur de dessin pour modifier
les costumes des sprites et l’arrière-plan
du projet afin de créer un nouveau scénario
pour ce jeu. Vous pourriez vous situer
dans l’espace, par exemple, et transporter
des aliens d’une station spatiale à l’autre.
Utilisez la bibliothèque des sprites
et des arrière-plans pour trouver d’autres idées.
Testez avec d’autres
sprites et arrière-plans
pour créer des scénarios
différents
SCRATCH
Casse-tête 66 67
Si tous les sprites se retrouvent 3.8 APPLIQUEZ LES RÈGLES
sur la rive droite, le casse-tête Pour terminer, les règles doivent être
a été résolu vérifiées à tout moment. Il suffit de modifier
puis d’ajouter quelques blocs à ceux de l’étape 1.7.
Exécutez ensuite le code et testez la logique.
= droite et bateau sur rive = droite alors
aller à x: −60 y: 0
répéter indéfiniment
La boucle va
constamment vérifier
les côtés pour voir si
l’une des règles a été
brisée
Cliquez ici
pour exécuter
le projet
Pistolet laser 3
Score 0
Vitesse de distorsion 5
Choisissez parmi
une sélection
d’arrière-plans
au thème
de l’espace dans
la bibliothèque
SCRATCH
Esquive d’astéroïdes 68 69
Conception du programme
Le programme utilise une boucle principale pour vérifier quelle
touche est pressée et déplacer la fusée vers le haut ou vers le bas.
Un rayon laser jaillit pour détruire les astéroïdes si la barre
d’espace est pressée. Le code de la boucle vérifie continuellement DÉBUT
si des roches ont touché la fusée pour mettre fin au jeu.
NON
NON
NON
OUI NON
PRÉPAREZ-VOUS AU LANCEMENT
Préparez-vous au lancement
1 Ce projet nécessite quelques éléments de base pour
démarrer. Les sprites et l’arrière-plan vont créer l’environnement
espace pour le jeu, et des variables ajouteront des fonctionnalités.
Space
480 x 360
Cliquez ici pour Outil
sélectionner Remplissage
la couleur
Convertir en vecteur
SCRATCH
Esquive d’astéroïdes 70 71
1.4 CRÉEZ LES VARIABLES
Utilisez le bouton Créer Variables
une variable dans la section Variables
Cette variable compte
pour créer toutes les variables requises Créer une variable le nombre d’astéroïdes
pour ce projet. Assurez-vous que les cases
qui ont été esquivés
de Pistolet laser, Score et Vitesse
avec succès
de distorsion soient cochées de sorte Évités
qu’elles s’affichent à l’écran.
Pistolet laser
Score
Codage de la fusée
2 Maintenant que les éléments de base sont prêts,
vous pouvez commencer à coder en commençant par le
sprite Rocketship. Il faudra ensuite ajouter des commandes
de direction pour la fusée, la faire se déplacer dans l’espace,
et lui fournir un pistolet pour tirer au laser.
aller à x: -200 y: 0
s’orienter à 180
mettre Évités à 0
mettre Score à 0
mettre Intervalle à 2
Ne vous préoccupez
pas de l’astéroïde
pour le moment,
il sera codé plus tard
SCRATCH
Esquive d’astéroïdes 72 73
2.4 ANIMEZ LA FUSÉE 2.5 ÉVITEZ LES ASTÉROÏDES
Sans flamme, la fusée semble immobile. Ajoutez les blocs de code ci-dessous au sprite Rocketship.
Pour éviter cela, cliquez sur l’onglet Costumes, Ils vont contrôler le comportement de la fusée si elle touche les astéroïdes
puis cliquez droit sur le costume numéro cinq qui seront ajoutés par la suite.
et choisissez supprimer. Ajoutez ensuite le code
ci-dessous pour donner l’impression qu’elle vole
dans l’espace. Testez le code avant de passer Si la fusée touche
à l’étape suivante. le sprite Rocks,
quand est cliqué le jeu est fini
répéter indéfiniment
3
si touche le Rocks ? alors
rocketship-d
131 x 181 Vous pouvez aussi
2.6 PRÉPAREZ LE PISTOLET LASER
Vous allez maintenant écrire le code qui contrôle le pistolet laser.
supprimer un costume Lorsque la touche espace est pressée, s’il reste des munitions dans
en cliquant sur la croix le pistolet, celui-ci tire. Pour obtenir cet effet, l’arrière-plan alterne
5 bleue rapidement avec l’arrière-plan rouge, ce qui donne l’impression d’un tir
au laser. Ajoutez ce code au sprite Rocketship et testez-le.
Vérifie s’il reste Déclenche un effet
des munitions de son pour le tir
rocketship-e dans le pistolet laser au laser
143 x 159
dupliquer quand la touche espace est pressée
exporter
si Pistolet laser > 0 alors
supprimer
jouer le son laser2 Réduit le
nombre de tirs
ajouter –1 à Pistolet laser restants de un
si intervalle > 0.5 alors L’intervalle n’est réduit que s’il est
supérieur à 0,5 seconde pour ne
pas rendre le jeu injouable
mettre Intervalle à 0.90 * Intervalle
Codez l’astéroïde
3 Maintenant que la fusée est prête, programmons
les astéroïdes. Le code des prochaines étapes va les faire
défiler sur l’écran. Une explosion sera également ajoutée
pour simuler l’impact du laser sur les astéroïdes touchés.
Sprite Explosion x 36 y 28
quand je reçois Tir de pistolet laser
Afficher Taille 100 Direction 90
supprimer ce clone
Costume costume1
Grouper Dégrouper Avancer Reculer Avant- Arrière-
plan plan
Remplissage Contour 0 Marker
Convertir en Bitmap
SCRATCH
Esquive d’astéroïdes 76 77
3.6 MASQUEZ L’EXPLOSION
Ajoutez ce code au sprite
d’explosion pour qu’il ne soit pas visible au quand est cliqué
démarrage du jeu.
cacher Masque l’explosion
au démarrage du jeu
Ce bloc interrompt
toute exécution de code,
ce qui termine le jeu
barre de défilement
Choisissez l’option
barre de défilement
dans le menu déroulant
TRUCS ET ASTUCES
Trucs et astuces
Ajoutez un code de triche pour recharger votre
pistolet laser
L’ajout de vos propres codes de triche est une façon quand la touche x est pressée
amusante de personnaliser un projet. Ajoutez ce
code au sprite Rocketship de sorte qu’en appuyant Modifiez ce nombre pour
sur la touche x, le laser bénéficie de trois coups
mettre Pistolet laser à 3
augmenter ou diminuer
supplémentaires. Vous pouvez également créer un le nombre de tirs
sprite qui apparaît tous les 20 astéroïdes, et ajoute supplémentaires
un tir s’il touche le vaisseau spatial.
Spectre de l’espace
Ajoutez ce code pour appliquer une série
de couleurs à l’arrière-plan afin de créer un quand est cliqué
fantastique spectacle de lumière
intergalactique.
répéter indéfiniment
Pistolet laser 3
Score 0
Vitesse de distorsion 5
répéter indéfiniment
montrer
répéter indéfiniment
1
tourner de 15 degrés
ajouter 1 à Évités
2
envoyer à tous Mettre à jour le score
Le chien de l’espace
est ajouté aux
costumes du sprite
Rocks.
PYTHON
Qu’est-ce que Python ?
Python est l’un des langages de programmation les plus populaires
au monde. Ce langage extrêmement polyvalent répond à un large
éventail de situations. Basé sur le texte, il est idéal pour les débutants
parce qu’il est facile à lire et à comprendre.
Caractéristiques de Python
Python est un langage Libre et open source
de programmation simple En tant que logiciel free/libre
et minimaliste. Il possède et open source (FLOSS), Python
des fonctionnalités qui peut être distribué librement.
le rendent attractif aussi bien Son code source est accessible et
pour les programmeurs modifiable, et des extraits de code
débutants qu’expérimentés. peuvent également être utilisés
dans de nouveaux programmes.
Portable
Python peut être exécuté
sur de nombreuses
plates-formes différentes,
telles que macOS,
Windows et PlayStation.
PYTHON
Qu’est-ce que Python ? 82 83
Comment ça marche
Un programme Python, généralement appelé APPLICATIONS
script, est un fichier texte contenant des mots,
des nombres et des ponctuations, qui correspondent Python est un langage de programmation
à usage général avec lequel vous créez
aux instructions. Ces instructions sont saisies par
des systèmes très diversifiés. Grâce à ses
le programmeur en respectant la syntaxe du langage. nombreuses bibliothèques spécialisées, il est
IDLE (Integrated Development and Learning utilisé dans des domaines aussi divers que les
Environment), une application gratuite installée affaires, la médecine, la science et les médias.
avec Python, comprend un éditeur de texte basique
qui permet à l’utilisateur d’écrire, de modifier et Développement de jeux
d’enregistrer le code avant d’exécuter un programme. Python a différents
modules et bibliothèques
destinés au développement
de jeux. Il s’agit notamment
de pygame, pour les jeux
2D, et PySoy, un moteur
de jeu 3D basé sur le cloud.
Développement web
Les développeurs utilisent
Excellent support Python pour créer
Python est très bien des tâches automatisées,
documenté, avec telles que la génération
notamment des guides de contrôles et les tests,
de démarrage, une section ou des applications Web.
référence et de nombreux
exemples de code.
Installation de Python
Ce livre s’appuie sur la version 3 de Python. Elle est gratuite et peut
être facilement téléchargée à partir du site Python. Suivez les
instructions correspondant à votre système d’exploitation.
https://www.python.org
2 Téléchargez un installeur
Sélectionnez la version la plus récente de Python
correspondant à votre système d’exploitation. Le fichier
Python.pkg sera téléchargé automatiquement sur votre
système.
3 Exécutez l’installeur
Choisissez cet installeur Une fois téléchargé, double-cliquez sur le fichier .pkg
pour les ordinateurs 64 bits et suivez les instructions. Le processus d’installation sur un
ordinateur Mac est très simple.
Il suffit d’accepter la licence et de confirmer l’emplacement
Python 3.9.2 – Feb. 19, 2021 d’installation (généralement le disque dur Macintosh).
Download macOS 64-bit installer
Download macOS 64-bit/32-bit installer
Install Python
Choisissez cet installeur
Welcome to the Python Installer
pour les ordinateurs 32 bits
Go Back Continue
Fenêtre de l’éditeur
Vous ouvrez l’éditeur de code COULEURS DU CODE
en sélectionnant New File ou Open
dans le menu File de IDLE. C’est dans Pour faciliter la lecture du code et la détection des erreurs,
cette fenêtre que les programmeurs IDLE affiche le texte dans l’éditeur et la console en utilisant
différentes couleurs. La couleur utilisée pour chaque mot
tapent des séries d’instructions beaucoup
dépend de son rôle dans le code.
plus longues et complexes, qu’ils
enregistrent ensuite dans des fichiers
dont l’extension est .py. COULEURS DU CODE
Code Couleur Exemple
Un fichier Python affiché Commandes intégrées Violet print()
dans la fenêtre de l’éditeur
Symboles, noms,
Noir 25
et nombres
Utilisation de IDLE
L’interface de IDLE, l’environnement de développement et d’apprentissage
intégré de Python, se compose d’une fenêtre console qui évalue immédiatement
les commandes courtes, et de la fenêtre de l’éditeur dans laquelle
les programmeurs saisissent et enregistrent des programmes plus longs.
Exécuter un programme depuis IDLE
Pour exécuter un programme à partir de IDLE, vous devez d’abord
ouvrir son fichier dans la fenêtre de l’éditeur. S’il s’exécute
correctement, la console affiche la sortie du code, sinon un message
d’erreur s’affiche.
Erreurs courantes
num = 4
En plus d’être sensible à la casse, Ici « num » a été saisi
Python est également très strict if (nut == 5): par erreur en « nut »
sur la disposition et l’orthographe
du code. Les sections de code print("Hello world!") L’erreur de code entraîne
ce message d’erreur
doivent être indentées (décalées)
de quatre espaces par rapport
à la ligne précédente, afin Traceback (most recent call last):
de rendre le code plus lisible.
Ces caractéristiques sont File "/Users/tinajind/Desktop/helloworld.py",
redoutables pour les débutants line 2, in <module>
mais IDLE aide à repérer
et corriger les erreurs à l’aide if (nut == 5):
de bulles d’informations NameError: name 'nut' is not defined
contextuelles et de messages
d’erreur (voir pages 118-121) >>>
dans la console.
Les variables dans Python
Les variables font partie des outils de base en programmation, elles permettent
de stocker et de manipuler les données. Ce sont des « boîtes » dans lesquelles
vous rangez les valeurs utilisées dans un programme.
LENTILLES GÂTEAUX
ÉPICES
Attribuer un nombre
Ici, la commande déclare une variable appelée
eau et y stocke la valeur entière 8. Dans Python,
on dit aussi que l’on attribue 8 à eau.
>>> eau = 8
Tapez le code EAU
derrière l’invite >>>
PYTHON
Les variables dans Python 88 89
Calcul simple
Ce code effectue une simple >>> input = 2
multiplication. Il stocke
l’entier 2 dans la variable >>> score = input * 3
input, puis récupère cette
LAIT valeur et la multiplie par 3. >>> print(score)
Le résultat est stocké dans la
variable score, puis affiché 6
à l’écran.
PYTHON
UTILISE LES
MÊMES RÈGLES
D’ARITHMÉTIQUE QUE
Entiers et flottants NOUS POUR EFFECTUER
Les nombres dans les programmes Python
appartiennent à un des deux types suivants :
SES CALCULS
entier (integer) ou flottant (float). Un entier
ne contient pas de chiffres après la virgule,
tandis qu’un flottant (abréviation pour Opérateurs arith
m
virgule flottante) possède une partie décimale. Les nombres et les étiques
va
Les flottants sont souvent utilisés pour des combinés en utilis riables contenant des nombres pe
ant l’addition, la so uvent être
mesures ou comme résultat d’un calcul. la division. Les sy ustraction, la mul
mboles de ces pr
arithmétiques. L’a ocessus sont appe tiplication et
dd lés opérateurs
animaux est une variable entière et la division sont ition, la soustraction, la multiplicat
représentées par io
et contient la valeur 2 +, –, * et / respectiv n
ement.
OPÉRATEURS AR
>>> animaux = 2 ITHMÉTIQUES
Symbole
Signification
>>> print(animaux)
+ Addition
2
- Soustraction
ENTIER
et branchements
Il est important
de faire la distinction
entre les deux signes
égaux de Python. Le
Les booléens, un autre type de données en Python, n’ont signe = est l’opérateur
d’affectation alors
que deux valeurs possibles : True (vrai) ou False (faux). que le double signe
Ils permettent d’écrire des instructions de branchement qui égal == est
contrôlent quelles parties d’un programme sont exécutées. l’opérateur d’égalité.
Valeur égale
True de pommes sont
== différentes
Différent de
Les opérateurs logiques fonctionnent aussi avec les variables.
!= Valeur différente
Cet exemple stocke des valeurs dans deux variables puis vérifie
si les valeurs stockées sont différentes.
Opérateurs booléens
Les expressions booléennes peuvent être
>>> (oranges < 10) and (apples > 2)
combinées à l’aide des opérateurs booléens True Pour que cette expression soit vraie,
les deux expressions doivent être vraies
« and », « or » et « not ». Ils permettent de créer
des expressions plus complexes qui peuvent >>> (oranges < 10) or (apples == 3)
traiter plusieurs variables différentes. True Une seule expression doit être vraie
pour que cette instruction soit vraie
>>> not(apples == 7)
En plaçant not devant
une expression vraie, False
vous obtenez la valeur False
PYTHON
Opérateurs logiques et branchements 92 93
Plus de deux
branchements quiz_score = 9
Lorsqu’il y a plus de
deux choix possibles if quiz_score > 8:
dans le code, la
commande elif print("Vous êtes un champion !") C’est la
(raccourci pour else if, deuxième
« sinon si ») est utilisée. Il elif quiz_score > 5: condition
peut y avoir plusieurs
elif entre le if et le else. Si la deuxième
print("Vous auriez pu faire mieux!") condition est
vraie, cette ligne
else: est affichée
Entrée
et sortie
Il ne sert à rien d’écrire un programme
à moins qu’il ne produise une sortie
qui puisse être lue et comprise.
En Python, les programmes nécessitent
souvent une entrée, soit de la part
de l’utilisateur, soit d’un fichier.
PYTHON
Entrée et sortie 94 95
4 Affiche un entier
Ouvre le fichier avec ajout des données à la fin Cela signifie « Ajouter »
Boucle For
Si un programmeur sait combien de fois un bloc de indenté de quatre espaces par rapport à l’instruction
code sera répété, une boucle for est utilisée. Le code for. L’indentation peut également être effectuée
répété constitue le corps de la boucle et chaque manuellement.
exécution est appelée itération. Le corps est toujours
while True:
print("Rien ne peut m’arrêter maintenant !")
Blocage
Les boucles infinies accidentelles sont La ligne est affichée de façon
l’équivalent en codage d’un trou noir. répétitive
L’exécution du programme est bloquée
et l’ordinateur ne répond plus.
La boucle
imbriquée Cette ligne met à jour la variable reponse La boucle s’arrête si
à chaque itération, ce qui permet de sortir l’entrée utilisateur est n
de la boucle en cas de besoin
Sélectionne
for equipe in equipes: une équipe à traiter
for nom in equipe :
print(nom)
print("\n")
Déclenche la commande
continue après avoir lu
for lecture in lectures: une valeur négative
if lecture < 0:
Continue
continue La commande continue est moins drastique,
Donne la somme elle ignore uniquement l’itération courante.
total = total + lecture de toutes La boucle passe alors à l’itération suivante.
les lectures Dans cet exemple, si une valeur négative est
print("Le total fait : " +str(total)) non négatives rencontrée, elle est simplement ignorée et la
boucle passe à la valeur suivante dans la liste.
Les fonctions
Un bout de code qui exécute une tâche spécifique est appelé
fonction. Si la tâche est exécutée souvent, il est possible de la
séparer du code principal pour éviter de répéter des instructions
identiques. En divisant ainsi le code en sections, la lecture
et le test du programme sont plus faciles.
BUREAU DE POSTE
Nom de l’objet
Méthode upper()
Cette méthode transforme >>> ville = "Paris"
toutes les lettres
minuscules d’une chaîne >>> ville.upper() Les parenthèses
en lettres majuscules. peuvent contenir
Elle ne peut être utilisée 'PARIS' un paramètre
qu’avec des chaînes
de caractères.
Nom de la méthode
def print_temperature_en_Fahrenheit(temperature_en_Celsius) :
temperature_en_Fahrenheit = temperature_en_Celsius * 1.8 + 32
print(temperature_en_Fahrenheit)
total_lettre_e = total_lettre_e + 1
return total_lettre_e
Demande aux utilisateurs
d’entrer leur nom, puis le
stocke dans la variable
nom_utilisateur = input("Saisissez votre nom : ") nom_utilisateur
total_e_dans_nom = compter_lettre_e(nom_utilisateur)
print("Il y a " + str(total_e_dans_nom) + "e dans votre nom")
Variables locales et globales d’autres fonctions du code, mais pas les variables
Une variable globale est déclarée dans la partie locales. Le code renverra un message d’erreur si une
principale du code et est visible partout. Une variable variable locale est utilisée en dehors de sa fonction.
locale, par contre, est déclarée à l’intérieur d’une Une fonction doit déclarer la variable globale qu’elle a
fonction et n’existe que pendant l’exécution de cette l’intention d’utiliser, sinon Python créera une nouvelle
fonction. Les variables globales peuvent être lues par variable locale avec le même nom.
def reset_jeu():
global score, charmes, niveau
score = 0
charmes = 0
niveau = 0
Modules intégrés
La bibliothèque standard de Python est fournie avec
chaque installation de Python. Vous disposerez donc turtle
Ce module Python recrée le robot en forme
immédiatement de modules tels que Tkinter et turtle de tortue issu du langage de programmation Logo.
sans avoir besoin de les télécharger ou d’installer du Le robot dessine sur l’écran en se déplaçant.
code supplémentaire.
random
Ce module permet aux programmes
d’inclure des calculs ou des sorties basés sur
des nombres aléatoires. Un programmeur socket
peut ainsi intégrer la notion de hasard Avec le module socket, les programmes
dans son code. communiquent à travers les réseaux et Internet et ils
sont capables de créer leurs propres sockets.
datetime
À l’aide du module datetime, un programme time
travaille avec des dates de calendrier Les fonctions de ce module gèrent le temps, comme
et des fonctions qui peuvent calculer celles relatives au temps mesuré par le processeur de
des durées. l’ordinateur ou aux fuseaux horaires des différents pays.
Tkinter
webbrowser Grace au module Tkinter, les programmeurs sont
Le module webbrowser permet capables de créer une interface utilisateur graphique
d’ouvrir un navigateur sur l’ordinateur (GUI), y compris des éléments tels que des boutons
de l’utilisateur et d’afficher des liens. et des menus.
PYTHON
Les bibliothèques 104 105
Importer et utiliser des modules
Le processus d’ajout d’un module à un programme afin qu’il puisse utiliser
ses fonctions et définitions est appelé « importation ». En Python, il est
possible d’importer tout ou partie des fonctions d’un module. La méthode
utilisée pour effectuer l’importation dépend des exigences du programme.
Les exemples ci-dessous illustrent les différentes méthodes d’importation
et la syntaxe requise dans chaque cas.
import ...
Le mot clé import suivi du nom du import time
module met tout le code du module à la
disposition du programme. Pour accéder
aux fonctions du module, il est nécessaire Appelle la fonction timezone
de taper son nom suivi d’un point puis offset = time.timezone du module time
du nom de la fonction afin d’appeler
cette dernière. print("Votre décalage en heures par rapport à
l’heure UTC est de: ", offset) Affiche la valeur
de la variable offset
from … import …
Si un programme n’a besoin d’utiliser from random import randint
qu’une ou deux fonctions d’un module, La fonction
il est préférable d’importer uniquement randint() produit
ces fonctions. Dans ce cas, il n’est pas un entier aléatoire
nécessaire d’inclure le nom du module jet_de = randint(1,6) entre 1 et 6
avant le nom de la fonction.
print("Vous avez lancé un", jet_de)
from … import … as …
Si le nom d’une fonction dans le module from webbrowser import open as montre_moi
est trop long ou similaire à d’autres noms
dans le code, il peut être utile de la
renommer. Comme avec From... import...,
le programmeur se réfère ensuite à la url = input("saisissez une URL: ")
fonction simplement par son nouveau
nom, sans la précéder du nom du module. montre_moi(url) Affiche la page Web demandée
par l’utilisateur
PYGAME
La bibliothèque pygame contient un grand nombre
de modules utiles pour coder des jeux. Pygame
ne faisant pas partie de la bibliothèque standard,
les programmeurs qui en ont besoin doivent
préalablement la télécharger et l’installer. Pygame
Zero (voir p. 164-165) est un outil destiné
aux apprentis programmeurs qui facilite l’utilisation
des fonctions de pygame.
Générateur d’équipes
Dans un jeu de sport d’équipe, la première chose à faire est de choisir
les équipes. Une première solution consiste à choisir les capitaines puis
à les laisser choisir leurs joueurs mais vous pouvez aussi choisir les personnes
au hasard. Dans ce projet, vous allez automatiser ce processus en créant
un outil Python qui constituera les équipes au hasard.
Conception du programme
Le programme commence par mélanger la liste du reste de l’équipe. Les étapes sont ensuite
des joueurs. Il attribue ensuite la première moitié répétées pour créer la seconde équipe. Si vous
à l’équipe 1, sélectionne au hasard un capitaine voulez reconstituer les équipes, le programme
puis affiche le nom de ce dernier ainsi que ceux répète les étapes, sinon, il se termine.
DÉBUT
OUI
Recommencer
la sélection ?
NON
FIN
CRÉATION D’UNE ÉQUIPE
5
1 6
introduit la notion de chance dans un
programme. Il est décrit dans la section Docs
du menu d’aide d’IDLE.
5
1.4 CRÉEZ UNE LISTE DE NOMS
Vous aurez besoin du nom de tous les joueurs pour générer vos équipes
au hasard. En Python, vous conservez des groupes d’éléments connexes dans une liste
(voir p. 91). Commencez par créer la variable joueurs pour stocker la liste en
saisissant le bloc de code ci-dessous à la suite de l’instruction d’importation. Mettez le
contenu de la liste entre crochets et séparez chaque élément de la liste par une virgule.
import random
La liste est attribuée
joueurs = ["Martin", "Roland", "Anne", à la variable joueurs
Affiche le message
print("Capitaine de l’équipe 1 : " + random.choice(equipe1)) indiquant qui est le
capitaine de l’équipe
print("Équipe 1:")
for joueur in equipe1 :
print(joueur)
C >>>
equipe2 = joueurs[len(joueurs)//2 :]
print("\nCapitaine de l’équipe 2 : " + random.choice(equipe2)) \n affiche
le nom du
capitaine de
print("Equipe 2 :")
l’équipe 2
sur une
for joueur in equipe2 : nouvelle
ligne
print(joueur)
Claire
Jacques
Anne
David
Roland
Marissa
Grace
Alain
Maria
Trucs et astuces
Ajouter des joueurs JOUEURS SUPPLÉMENTAIRES
Le programme a une liste de 20 noms. Pour ajouter
d’autres joueurs au générateur d’équipe, il faut ajouter
d’autres noms à la liste. Le nombre total doit être pair,
afin que les équipes aient le même nombre de joueurs.
Plus d’équipes
Selon le sport, le nombre de joueurs par équipe diffère. Divise le nombre Attribue Attribue
Le code de ce projet gère deux équipes, mais si la liste de joueurs en trois la deuxième à la troisième
de joueurs est plus longue, vous pouvez avoir davantage parties égales partie de la liste équipe sa propre
d’équipes. Changez le code du programme afin de demander et attribue la première des joueurs liste de joueurs
à l’utilisateur combien de joueurs il souhaite dans chaque partie de la liste à equipe2 et son capitaine
équipe. Vous pouvez ensuite diviser le nombre de joueurs des joueurs à equipe1
en un nombre d’équipes déterminé. Si une équipe manque
de joueurs, assurez-vous d’en informer l’utilisateur.
while True:
random.shuffle(joueurs)
equipe1 = joueurs[:len(joueurs)//3]
print("Capitaine de l’équipe 1 : " + random.choice(equipe1))
print("Equipe 1:")
for joueur in equipe1:
print(joueur)
equipe2 = joueurs[len(joueurs)//3:(len(joueurs)//3)*2]
print("\nCapitaine de l’équipe 2 : " + random.choice(equipe2))
print("Equipe 2:")
for joueur in equipe2:
print(joueur)
equipe3 = joueurs[(len(joueurs)//3)*2:]
print("\nCapitaine de l’équipe 3 : " + random.choice(equipe3))
print("Equipe 3:")
for joueur in equipe3:
print(joueur)
TRUCS ET ASTUCES
Équipe ou tournoi
À ce stade, le programme est conçu pour un sport le code s’exécutera comme testé
d’équipe. Si vous souhaitez l’adapter pour des sports précédemment. Si vous choisissez
Affiche un message pour
individuels, modifiez le code comme indiqué ci-dessous. individuel, le code regroupera
demander à l’utilisateur
Il demandera à l’utilisateur de choisir entre un sport les joueurs par paires aléatoires
s’il s’agit d’un sport
individuel ou d’équipe. Si vous choisissez l’équipe, pour jouer les uns contre les autres.
d’équipe ou individuel
Vérifie la réponse
for joueur in equipe2: de l’utilisateur
Qui commence ?
Que le sport soit d’équipe print(joueurs[i] + " vs " + joueurs[i+1])
ou individuel, il faut
déterminer qui jouera en premier = random.randrange(i, i+2)
premier. Ajoutez ce code
au programme précédent
pour effectuer ce choix
print(joueurs[premier] + " commence")
dans le cas d’un sport
individuel.
Bienvenue dans le générateur d’équipes/
joueurs !
Le sport est-il individuel ou en équipes ?
Saisissez équipe ou individuel : individuel
Yoann vs Paul
La console Python affiche
YOANN PAUL
Yoann commence qui commence
PYTHON
Générateur d’équipes 116 117
Nombre de joueurs
Plutôt que de changer la taille de la liste quand le nombre de joueurs
varie, vous pouvez modifier le code pour demander à l’utilisateur le
nombre total de joueurs. Cela créera la liste des numéros, ainsi que
deux équipes égales. Modifiez le programme comme indiqué ici.
import random
joueurs = []
print("Bienvenue dans le générateur d’équipes !")
nombre_de_joueurs = int(input("Combien y a-t-il \
Affiche un message
de joueurs ? ")) pour que l’utilisateur saisisse
le nombre de joueurs
for i in range(1, nombre_de_joueurs + 1):
players.append(i)
equipe1 = joueurs[:len(joueurs)//2]
print("Capitaine de l’équipe 1 : " + str(random.choice(team1)))
print("Equipe 1:") Met à jour le code pour equipe1
equipe2 = joueurs[len(joueuers)//2:]
print("\nCapitaine de l’équipe 2 : " + str(random.choice(team2)))
print("Equipe 2:") Met à jour le code pour equipe2
Débogage
Le processus de recherche et de correction des erreurs dans un programme est
appelé débogage. Les erreurs peuvent aller de simples erreurs d’orthographe
à des problèmes de logique du code. Python dispose de divers outils qui mettent
en évidence et aident à corriger ces erreurs.
Erreurs de syntaxe
La syntaxe régit la disposition et l’orthographe
temperature = 25
des mots et des symboles qui composent le code.
Les erreurs de syntaxe sont les erreurs les plus
courantes et les plus faciles à corriger. Elles sont
l’équivalent des erreurs d’orthographe et if temperature > 20: Cette ligne
de code doit être
de grammaire détectées par les programmes print("Il fait bon") indentée
de traitement de texte. IDLE affiche ces erreurs
de syntaxe dans une fenêtre contextuelle.
>>> "temperature" + 5
Traceback (most recent call last):
pyshell fait
File "<pyshell#3", line 1, in <module> référence à la console
"temperature" + 5
TypeError: can only concatenate str (not "int") to str
PYTHON
Débogage 118 119
CHECK MODULE
La commande « Check Module » d’IDLE, disponible
Run Options Window
dans le menu Run, vérifie les erreurs de syntaxe
Sélectionner
d’un programme. Si elle en trouve, elle affiche Python Shell cette commande
un message qui permet aux programmeurs Check Module dans le menu Run
de les éliminer avant d’exécuter le programme. Run Module
Détails sur
l’emplacement Emplacement de
et la nature de l’erreur l’erreur dans le fichier
Erreurs de nom
Une faute d’orthographe dans le nom >>> pront ("Hello world")
d’une variable ou d’une fonction peut
provoquer une erreur de nom, ainsi que Traceback (most recent call last):
l’utilisation d’une variable avant qu’une
valeur ne lui soit affectée, ou l’appel d’une File "<pyshell#0>", line 1, in <module>
fonction avant qu’elle ne soit définie.
La commande à
Dans cet exemple, l’erreur de frappe n’est pront("Hello world") l’origine de l’erreur
détectée qu’au moment de l’exécution.
NameError: name 'pront' is not defined
Coloration du texte les chaînes de caractères sont en vert (voir p. 86). Si une
Comme la plupart des autres IDE, IDLE colore le partie du code n’est pas affiché dans la bonne couleur,
texte d’un programme Python. Cela facilite la c’est peut-être le signe d’une erreur de syntaxe. Un
détection des erreurs. Des mots clés tels que for, guillemet qui manque à la fin d’une chaîne de caractères
while ou if, par exemple, sont en orange alors que entraîne l’affichage de plusieurs lignes de code en vert.
Il manque un guillemet
au début
Mauvaise couleur
Dans cet exemple le code ne sera pas Le mot clé while answer = input(Choisissez un nombre")
coloré correctement à cause des a été mal
guillemets manquants et de la faute orthographié whle answer != 7:
d’orthographe du mot-clé while.
Faute d’orthographe pritn(Ce n’est pas le bon nombre")
dans le mot-clé
et guillemet manquant answer = input("Choisissez un nombre")
PYTHON
Débogage 120 121
Débogueur
VÉRIFIEZ L’ERREUR IDLE contient également un outil débogueur à partir
duquel les programmeurs exécutent pas à pas leur
Lors du débogage, il arrive souvent que programme, une ligne à la fois. Cet outil montre aussi
l’erreur se situe en amont de l’endroit
le contenu des variables à chaque étape du programme.
indiqué par le message d’erreur. Il est
donc judicieux de vérifier l’erreur dans Le débogueur peut être sélectionné dans le menu Debug
le code qui précède la ligne indiquée, de la console. Le processus de débogage sera alors
ou sur la ligne au-dessus. déclenché à la prochaine exécution de programme.
Sélectionnez-le de nouveau pour le désactiver.
print(hello " + "world")
Cliquez dans la
Debug Options Window
console pour faire
Produit une errreur Go to File/Line apparaître le menu
« Invalid syntax » à cause Debugger Debug en haut
d’un guillemet manquant de l’écran
Stack Viewer
Auto-open Stack Viewer
Locals
_annotations_ {}
_builtins_ <module 'builtins' (built-in)>
_doc_ None
Tout est correctement orthographié _fi le_ '/Users/code/debug4.py'
_loader_ <class '_frozen_improtlib.Builtinimporter'>
Les lettres majuscules et minuscules
_name_ '_main_'
ne sont pas utilisées de manière
interchangeable _package_ None
_spec_ None
Les chaînes de caractères sont bien
encadrées de guillemets count 1
Les guillemets vont par deux
Le code a été enregistré depuis la
dernière modification
Aucune lettre n’est confondue avec
des chiffres, comme O et 0, ou I et 1
Il n’y a pas d’espaces inutiles au début
d’une ligne
Les variables et les fonctions sont
Débogueur de IDLE
déclarées avant d’être utilisées
Lorsqu’un programme est exécuté, le débogueur
affiche des informations à son sujet, notamment
les valeurs actuelles des variables. En cliquant sur
l’option « step », il affiche le code habituellement
masqué qui est exécuté en arrière-plan.
Planificateur de projet
Les outils de gestion du temps sont très pratiques. Il existe plusieurs
applications qui aident à suivre la progression des tâches et activités
quotidiennes. Ce projet utilisera les tuples, ensembles et modules
graphiques de Python pour créer un planificateur dédié au développement
d’une petite application de jeu.
Comment ça marche
Ce planificateur crée un calendrier pour aider les utilisateurs à planifier
Diagramme de Gantt
leur travail. Le programme affiche une fenêtre à partir de laquelle Un diagramme de Gantt est un diagramme
l’utilisateur choisit un fichier de projet. Il lit ensuite une liste de tâches à barres utilisé pour illustrer le calendrier
dans le fichier et les trie en ordre chronologique, en fonction de certains d’un projet. Les tâches à effectuer sont
répertoriées sur l’axe des y et les périodes
prérequis. Les données résultantes sont converties en un graphique qui sur l’axe des x. Les barres horizontales
s’affiche au début et à la fin de chaque tâche. du graphique matérialisent la durée
de chaque activité.
Répartition hebdomadaire
des tâches
Planificateur de projet
Ouvrir un projet…
La largeur de cette barre
représente la durée d’une activité
Semaine 1 Semaine 2 Semaine 3 Semaine 4 Semaine 5
Conception du jeu
Décomposition de la fonctionnalité
en étapes
Mise en œuvre des fonctions
de base
Tests et révision
Tests et révision
Conception du programme
DÉBUT
Ce projet s’appuie sur une boucle continue
pour vérifier si les utilisateurs ont appuyé
sur le bouton Ouvrir un projet. Dans ce cas,
le programme ouvre un fichier CSV dont il
lit et trie le contenu avant de l’afficher sous
Afficher la fenêtre
forme de graphique. Ce graphique affiche
la quantité de travail à effectuer dans
le temps imparti.
OUI
Afficher la boîte de dialogue
Bouton Ouvrir
d’ouverture de fichier
un projet… enfoncé ?
à l’utilisateur
Lire le fichier
CSV des tâches
NON
NON
Affichage
du diagramme de Gantt Fenêtre fermée ?
Fichier CSV
Les tâches pour ce projet sont stockées dans OUI
un fichier de valeurs séparées par des virgules
nommé fichier CSV. Ce type de fichier qui peut
être lu et modifié par des tableurs convient FIN
parfaitement pour des données tabulaires.
CRÉATION ET LECTURE DU FICHIER CSV
6 1
4 5 7
2
PLANIFICATEUR.PY PROJET.CSV
You have used the extension “.csv” at the end
of the name. The standard extension is “.py”.
You can choose to use the standard extension instead.
TUPLE PYTHON
Un tuple est une structure de données comme une
liste, mais sa longueur ne peut pas être modifiée une >>> nombres = (1, 2, 3, 4, 5)
fois qu’il a été créé et ses éléments ne peuvent pas
être mis à jour. Les listes sont principalement utilisées >>> print(nombres[3])
nombres est
pour stocker des valeurs du même type, comme une un tuple avec
liste de nombres représentant la taille d’un groupe 4 cinq valeurs
de personnes. Les tuples, en revanche, contiennent
des valeurs en relation, mais de types différents, La valeur à la position Les numéros d’index
tels que le nom, l’âge et la taille d’une personne. d’index 3 dans le tuple sont entre crochets
prerequis)
return taches
>>> lire_taches("projet.csv")
{'1': ('Conception du jeu', '2', ''), '2': ('Ebauche des
Les nombres sont
images', '1', '1'), '3': ('Decomposition de la fonctionnalite lus comme
des chaînes
en etapes', '2', '1'), '4': ('Mise en oeuvre des fonctions de de caractères
base', '5', '2 3'), '5': ('Tests et revision', '2', '4'), '6':
('Amelioration des images', '3', '5'), '7': ('Mise en oeuvre
des fonctions avancees', '7', '5'), '8': ('Tests et revision',
'4', '6 7'), '9': ('Publier sur l’App Store', '1', '8')}
PYTHON
Planificateur de projet 126 127
1.6 CONVERTIR VERS D’AUTRES TYPES DE DONNÉES
Les valeurs « numéro de tâche » et « durée de la tâche » sont ci-dessous. Le numéro de tâche sera toujours un nombre
des nombres dans le fichier CSV mais elles sont lues comme des entier, mais la durée de la tâche sera une valeur flottante
chaînes de caractères. Il faut les convertir en valeurs numériques (comme 2,5). Enregistrez le fichier, puis exécutez à
Python. Modifiez la fonction lire_taches() comme indiqué nouveau le module pour le tester.
def lire_taches(nomfichier):
taches = {}
for rang in csv.reader(open(nomfichier)):
numero = int(rang[0]) Convertit le numéro de tâche
de chaîne de caractères
titre = rang[1] en nombre entier
ENREGISTRER
>>> lire_taches("projet.csv")
{1: ('Conception du jeu', 2.0, ''), 2: ('Ebauche des images',
Les numéros de
1.0, '1'), 3: ('Decomposition de la fonctionnalite en etapes', tâche sont lus
comme des
2.0, '1'), 4: ('Mise en oeuvre des fonctions de base', 5.0, '2 valeurs entières
import csv
def lire_taches(nom fichier) :
taches = {}
for rang in csv.reader(open(nomfichiers)):
numero = int(rang[0])
titre = rang[1]
duree = float(rang[2])
prerequis = set(map(int, rang[3].split()))
taches[numero] = (titre, duree, prerequis)
return taches
ENREGISTRER
>>> lire_taches("projet.csv")
{1 : ('Conception du jeu', 2.0, set()), 2 :
('Ebauche des images', 1.0, {1}), 3 :
('Decomposition de la fonctionnalite en etapes',
2.0, {1}), 4 : ('Mise en oeuvre des fonctions de
base', 5.0, {2, 3}), 5 : ('Tests et revision', Les valeurs numériques sont
maintenant converties
2.0, {4}), 6 : ('Amelioration des images', 3.0, dans le bon type de données
import csv
Importe la fonction namedtuple()
from collections import namedtuple du module collections
PRÉREQUIS
TÂCHE
TUPLE
NOMMÉ
DURÉE TITRE
PYTHON
Planificateur de projet 130 131
1.11 APPELEZ LE TYPE TUPLE NOMMÉ
Le type tuple nommé créé à l’étape précédente est stocké dans la variable Tache.
Vous pouvez créer de nouvelles valeurs de ce type en appelant Tache comme une
fonction. Modifiez la fonction lire_taches() pour qu’elle appelle Tache plutôt que
de créer d’autres tuples comme le premier. Ensuite, exécutez le module et testez le code Le tuple nommé Tache
dans la console. Affichez d’abord toutes les valeurs d’un tuple (Sortie 1) puis essayez est stocké dans
d’extraire une de ces valeurs en utilisant son nom (Sortie 2). le dictionnaire taches
def lire_taches(nomfichier):
taches = {}
for rang in csv.reader(open(nomfichier)):
numero = int(rang[0])
titre = rang[1]
duree = float(rang[2])
prerequis = set(map(int, rang[3].split()))
taches[numero] = Tache(titre, duree, prerequis)
return taches
ENREGISTRER
SORTIE 1
>>> taches[4].prerequis
{2, 3}
SORTIE 2
Extrait les prérequis
de la tâche [4]
par son nom
ORDONNEZ LES TÂCHES
NON
Reste-t-il des tâches
incomplètes ? FIN
OUI
Rechercher la
première/prochaine
tâche incomplète
Les conditions
NON préalables de la
tâche sont-elles
toutes remplies ?
OUI
return taches
def ordre_taches(taches) :
incomplet = set(taches) On commence avec toutes On boucle sur les numéros
les tâches incomplètes de tâches incomplètes tant
qu’il en reste
complet = set() et sans jours de début
jours_debut = {}
Récupère la tâche
while incomplet : et vérifie si ses prérequis
Calcule le
ont été remplis
début de cette
for num_tache in incomplet : tâche en
fonction des
tache = taches[num_tache] jours de fin de
ses prérequis
if tache.prerequis.issubset(complet) :
jour_debut_plustot = 0
for num_prereq in tache.prerequis :
jour_fin_prerequis = jours_debut[num_prereq] + \
taches[num_prereq].duree
if jour_fin_prerequis > jour_debut_plustot :
jour_debut_plustot = jour_fin_prerequis
jours_debut[num_tache] = jour_debut_plustot
Sortie de la boucle
for. La boucle sera incomplet.remove(num_tache) Stocke la date
relancée s’il reste des de début et
tâches incomplètes enregistre cette
complet.add(num_tache)
tâche comme
terminée
break
Renvoie le
return jours_debut dictionnaire créé
MÉTHODE ISSUBSET
La méthode issubset indique si un ensemble est immédiatement. La valeur jour_debut_plustot
contenu dans un autre. Un ensemble vide est un d’une tâche est définie à 0 avant l’examen des
sous-ensemble de tout ensemble, y compris un autre conditions préalables. S’il n’y en a pas, la tâche
ensemble vide. Cela signifie que tache.prerequis. débutera au jour 0. Une fois cette tâche ajoutée
issubset(complet) sera vrai pour une tâche sans dans l’ensemble complet, les tâches qui en
condition préalable et elle commencera dépendent peuvent commencer.
ORDONNEZ LES TÂCHES
Affichage du graphique
3 Maintenant que vous avez lu le fichier
CSV et ordonné les tâches qu’il contient, il est
temps d’afficher le graphique. Python dispose
de Tk, une boîte à outils multiplateforme intégrée
pour les applications graphiques. Vous l’utiliserez
pour ouvrir une fenêtre et dessiner à l’intérieur. Semaine Semaine Semaine
1 2 3
Conception
Publier sur du jeu
l’App Store
Décomposition de la Ébauche
fonctionnalité en étapes des images
Amélioration
Tests et révision
des images
return jours_debut
racine = tkinter.Tk()
Donne un titre
racine.title("Planificateur de projet") à la fenêtre
return jours_debut
def ouvrir_projet():
nomfichier = askopenfilename(title="Ouvrir un projet", initialdir=".", \
filetypes=[("CSV Document", "*.csv")])
taches = lire_taches(nomfichier)
charte_graphe(taches, canvas)
Affiche un graphique des Lit les tâches dans le fichier.csv Spécifie le format
tâches dans le widget canvas renvoyé par la boîte de dialogue de fichier attendu
PYTHON
Planificateur de projet 136 137
3.5 DESSINEZ LE GRAPHIQUE
Il est temps de dessiner le diagramme de Gantt. charte_graphe() et donne des valeurs par défaut
Commencez par réfléchir à son aspect final et aux éléments à certains de ses arguments. Seuls les deux premiers
graphiques nécessaires pour le dessiner. Ajoutez arguments (taches et canvas) sont requis pour appeler
ce code à celui de l’étape 2.1 (au-dessus de la fonction la fonction. Les arguments avec des valeurs par défaut sont
ouvrir_projet()) pour dessiner les en-têtes et les lignes facultatifs et prendront les valeurs que vous avez spécifiées,
de séparation du graphique. Il définit une fonction créant des « constantes » locales dans la fonction.
En-tête de colonne
Semaine 1 Semaine 2 Semaine 3 Semaine 4 pour le numéro
de semaine
TÂCHE 1
Séparateur
de colonne
TÂCHE 2
Barre de début/durée
TÂCHE 3 de la tâche
Les arguments avec des valeurs par défaut Valeur par défaut
spécifient où dessiner les éléments d’un argument
et l’espace qu’ils occuperont sur le canvas
Hauteur Largeur
du titre
LE WIDGET CANVAS DE TK
Le widget Canvas crée une zone à l’intérieur de laquelle (0,0) X
vous pouvez dessiner ou ajouter du texte. Vous créez
ces éléments en appelant des méthodes avec une
CANVAS[“HAUTEUR”]
ou plusieurs coordonnées en arguments, suivies d’un
certain nombre d’arguments mots-clés facultatifs pour
spécifier des informations de style (couleurs, épaisseurs
de ligne ou polices, voir les tableaux ci-dessous). Les CANVAS
coordonnées du canvas sont spécifiées en pixels à partir
du coin supérieur gauche de la zone de dessin. Les Y
couleurs peuvent être spécifiées soit par leur nom (red
ou yellow par exemple), soit par leur code hexadécimal
(comme #FF0000). Le texte est centré sur les
coordonnées transmises par défaut. L’argument anchor CANVAS[“LARGEUR”]
peut être défini avec une constante « point cardinal »
(tkinter.N, tkinter.NE ou tkinter.E) pour aligner plutôt
le coin ou le bord du texte sur les coordonnées.
tache = taches[num_tache]
canvas.create_text(titre_indent, y + rangee_hauteur / 2, \
text=tache.titre, anchor=tkinter.W, \
font=("Helvetica", typo_taille))
barre_x = titre_largeur + jours_debut[num_tache] \
* jour_largeur
Calcule les
barre_y = y + (rangee_hauteur – barre_hauteur) / 2 coordonnées
du coin
supérieur
barre_largeur = tache.duree * jour_largeur
gauche
de la barre
canvas.create_rectangle(barre_x, barre_y, barre_x + \ et sa largeur
barre_largeur, barre_y + \
barre_hauteur, fill="red")
y += rangee_hauteur
Conception du jeu
Mise en œ
uv
fonctions de re des Ébauche des images
base
Trucs et astuces
Empêcher le redimensionnement de la fenêtre
Si l’utilisateur redimensionne manuellement la fenêtre du diagramme de Gantt,
le contenu s’en trouve déplacé ou coupé. Il est très compliqué de redessiner Empêche la fenêtre racine
correctement la fenêtre à chaque fois qu’elle est redimensionnée, il faut donc d’être redimensionnée
empêcher cette action en ajoutant la ligne de code ci-dessous. en largeur ou en hauteur
racine.title("Planificateur de projet")
racine.resizable(width=False, height=False)
bouton_ouvrir = tkinter.Button(root, text="Ouvrir un projet...", \
command=ouvrir_projet)
Planificateur de projet
Ouvrir un projet…
Conception du jeu
Décomposition de la fonctionnalité
en étapes
Mise en œuvre des fonctions
de base
Tests et révision
racine = tkinter.Tk()
racine.title("Planificateur de projet")
racine.resizable(width=False, height=False)
bouton_cadre = tkinter.Frame(racine, padx=5, pady=5) Place le cadre en haut
de la fenêtre, remplissant
bouton_cadre.pack(side="top", fill="x") toute la largeur de x
...
Ouvrir un projet
TRUCS ET ASTUCES
def ouvrir_projet():
nomfichier = askopenfilename(title="Ouvrir un projet", initialdir=".", \
filetypes=[("CSV Document","*.csv")])
taches = lire_taches(nomfichier)
charte_graphe(taches, canvas)
nomfichier_label.config(text=nomfichier) Met à jour l’attribut text
de l’étiquette avec
racine = tkinter.Tk() le nom du fichier
racine.title("Planificateur de projet")
racine.resizable(width=False, height=False)
bouton_cadre = tkinter.Frame(racine, padx=5, pady=5)
bouton_cadre.pack(side=”top”, fill=”x”)
bouton_ouvrir = tkinter.Button(button_cadre, text= "Ouvrir un projet...", \
command=ouvrir_projet)
bouton_ouvrir.pack(side="left")
Crée un nouveau label
nomfichier_label = tkinter.Label(bouton_cadre) dans le bouton_cadre
Planificateur de projet
Conception du jeu
charte_graphe(taches, canvas)
nomfichier_label.config(text=nomfichier)
def effacer_canvas():
nomfichier_label.config(text="")
canvas.delete(tkinter.ALL) Supprime tous les éléments
Crée un nouveau bouton dans
existants dans la zone du canvas
la fenêtre qui lancera la
racine = tkinter.Tk() fonction effacer_canvas()
racine.title("Planificateur de projet")
bouton_ouvrir = tkinter.Button(racine, text="Ouvrir un projet...", \
command=ouvrir_projet)
bouton_ouvrir.pack(side="left")
bouton_effacer = tkinter.Button(bouton_cadre, text="Effacer", \
command=effacer_canvas)
bouton_effacer.pack(side="left") Place le nouveau bouton à gauche
de la fenêtre
nomfichier_label = tkinter.Label(bouton_cadre)
canvas = tkinter.Canvas(racine, width=1150, height=400, bg="white")
canvas.pack(side="bottom")
SELECTIONNEZ
Classe
Le mot-clé class permet de définir un
modèle en associant un certain nombre
de variables (attributs) et de fonctions
(méthodes) à un nom. Ici, la classe
Voiture définit la forme que devraient
avoir les objets ci-dessous.
VOITURE VÉLO
Objet
Un objet est une instance d’une classe, tout
comme une vraie voiture est une instance
du concept de voiture. Les champs et
méthodes d’un objet voiture contiendraient
des données et du code pour une instance
particulière de la classe Voiture. Ainsi, l’objet
nommé « sport » aurait une « vitesse_max » BERLINE SPORT
plus élevée que l’objet « berline ».
class voiture:
vitesse_courante = 0
vitesse_max = 0
CAMION
niveau_essence = 0
def acceleration(self):
print("On accélère")
def freinage(self):
print("On ralentit")
Méthodes de
la classe Voiture
SUV ma_voiture = Voiture()
ma_voiture_vitesse_courante = 4.5
ma_voiture_vitesse_max = 8.5
ma_voiture_niveau_essence = 4.5
Méthodes
Accélérer
Les méthodes définissent
le comportement
d’un objet. Les méthodes Donne aux champs de l’objet
d’un objet voiture seront Freiner ma_voiture des valeurs spécifiques
donc des actions qui
pourraient être effectuées Instancier une classe
sur ou avec une voiture Un programme conçu pour modéliser le fonctionnement d’une
Tourner voiture pourrait inclure la classe Voiture, avec des attributs
comme accélérer, freiner
et tourner. communs à toutes les voitures. La voiture d’un utilisateur
(ici, un modèle sportif) serait alors un objet, avec des champs
contenant des valeurs liées à cette voiture et des méthodes
définissant les actions possibles avec cette voiture.
Gestionnaire de budget
La gestion du budget est une tâche que l’ordinateur peut faciliter. Il existe
diverses applications pour suivre ses dépenses, basées sur la définition
de budgets par types de dépenses. Ce projet crée un gestionnaire de budget
simple à l’aide de dictionnaires et de classes Python.
1100.00
>>> depense("Courses", 35)
Renvoie le budget restant
465.00
>>> depense("Courses", 15)
450.00
>>> afficher_resume()
Budget Budgeté Dépensé Restant
--------------- ---------- ---------- ----------
Courses 500.00 50.00 450.00
Location 900.00 0.00 900.00
--------------- ---------- ---------- ----------
Total 1400.00 50.00 1350.00
Le résumé donne
un aperçu de toutes
les dépenses
PYTHON
Gestionnaire de budget 146 147
VOUS ALLEZ APPRENDRE COMMENT L’UTILISER
❯ Comment utiliser les dictionnaires Durée : La bibliothèque développée dans ce projet,
Python 1 heure complétée d’une interface utilisateur,
❯ Comment déclencher des Lignes de code : 43
constitue une application de gestion
exceptions pour les erreurs financière simple. Diviser un programme
Niveau de difficulté en modules et encapsuler du code et
❯ Comment formater des chaînes de
des données dans des classes sont deux
caractères pour la sortie
techniques courantes en programmation.
❯ Comment créer une classe Python
UTILISATEUR DE BIBLIOTHÈQUE
LA BIBLIOTHÈQUE BUDGET DÉBUT
budget_ajout
("Courses", 500)
Ajout du budget
2000
budget_ajout
("Location", 900)
Ajout des dépenses
1100
depense
("Courses", 35) Affichage du résumé
465
Conversion du code
en classe
depense
("Courses", 15)
450
FIN
MISE EN ŒUVRE
Mise en œuvre
1 Pour créer ce gestionnaire de budget, vous aurez besoin
d’un nouveau fichier Python pour le code de base, que
vous développerez ultérieurement. Les dictionnaires Python
vont servir à enregistrer les montants budgétés et dépensés.
DICTIONNAIRES
Lorsque vous choisissez une structure de données ci-dessous, la première colonne contient les clés
Python, réfléchissez à la manière dont vous écririez du dictionnaire et la seconde les valeurs
les informations à stocker. Souvent, la méthode la plus correspondantes. Si la table comporte plusieurs
simple consiste à les ranger dans un tableau comme colonnes de valeurs, celles-ci peuvent être stockées
ci-dessous. Si les informations de la première colonne dans des dictionnaires séparés en utilisant les mêmes
sont uniques (pas de doublons), vous pouvez utiliser clés. Vous pouvez donc avoir un dictionnaire pour
un dictionnaire, c’est-à-dire une structure de données les budgets et un autre pour les dépenses.
constituée de paires clé:valeur. Dans le tableau
FORMAT DU DICTIONNAIRE
Nom du budget Montant du budget
Course 500
Factures 200
Divertissement 50
Les informations du
{"Courses": 500, "Factures": 200, "Divertissement": 50} tableau ci-dessus sous
forme de dictionnaire
Python
PYTHON
Gestionnaire de budget 148 149
Ajout d’un budget
2 Dans cette section, vous allez créer
des budgets pour les différentes dépenses. Vous allez
commencer par le code qui permettra d’ajouter
ces budgets, puis vous le compléterez pour contrôler
les erreurs courantes.
1100.0
>>> budget_ajout("Location", 400)
Le montant disponible
700.0 est réduit deux fois
>>> budgets
{'Courses': 500, 'Location': 400}
EXCEPTIONS
En Python, les erreurs sont signalées par des exceptions Il existe de nombreux types d’exceptions standards
qui interrompent l’exécution normale du code. À moins en Python. Chacune d’elles peut recevoir une chaîne de
que l’exception ne soit interceptée, le programme se caractères qu’elle va afficher à l’utilisateur pour expliquer
fermera immédiatement et affichera l’exception qui a été ce qui n’a pas fonctionné. Le tableau ci-dessous répertorie
déclenchée et la ligne de code à laquelle elle s’est produite. quelques types d’exceptions standards et quand les utiliser.
TYPES D’EXCEPTIONS
Nom Quand l’utiliser
TypeError Une valeur n’a pas le bon type : une chaîne a été utilisée, par exemple, alors qu’un nombre était attendu
ValueError Une valeur est invalide : elle est trop grande, par exemple, ou trop petite
>>> budgets
{'Courses': 500, 'Location': 900}
Les variables
ne seront pas mises >>> disponible
à jour avec les
mauvaises valeurs
1100.0
if name in budgets:
raise ValueError("Le budget existe déjà") Vérifie si le montant budgété
est supérieur au montant
if montant > disponible: disponible
Déclenche une
raise ValueError("Fonds insuffisants") exception et quitte
la fonction
budgets[nom] = montant immédiatement
ENREGISTRER
AJOUT D’UN BUDGET
def afficher_resume():
Parcourt toutes les clés
for nom in budgets: du dictionnaire budgets
Récupère le montant
mbudgete = budgets[nom] budgété pour la clé nom
Récupère le montant
mdepense = depenses[nom] dépensé pour la clé nom
Calcule le montant restant en déduisant
restant = mbudgete - mdepense le montant budgété des dépenses
def afficher_resume()
print("Budget Budgété Dépenses Restant")
print("--------------- ---------- ---------- ----------")
for nom in budgets:
Les titres ont été alignés sur les tirets
mbudgete = budgets[nom]
mdepense = depenses[nom]
def afficher_resume():
print("Budget Budgété Dépenses Restant")
print("--------------- ---------- ---------- ----------")
total_budgete = 0
total_depense = 0 Définit le total
des variables à 0
total_restant = 0
for nom in budgets:
SUIVI DES DÉPENSES
mbudgete = budgets[nom]
mdepense = depenses[nom]
restant = mbudgete - mdepense
print(f'{nom:15s} {mbudgete:10.2f} {mdepense:10.2f} '
f'{restant:10.2f}')
total_budgete += mbudgete
total_depense += mdepense Ajoute le montant aux totaux
total_restant += restant
print("--------------- ---------- ---------- ----------")
print(f'{"Total":15s} {total_budgete:10.2f} {total_depense:10.2f} '
f'{total_budgete - total_depense:10.2f}')
class GestionnaireBudget:
Arguments
de l’initialiseur
def __init__(self, montant):
disponible = 2500
budgets = {}
depenses = {}
CONVERSION DU CODE EN CLASSE
ENREGISTRER
Trucs et astuces
Gérer les changements
Vous avez déjà modifié la méthode budget_ajout pour Lisez attentivement ce code pour bien
éviter les doublons. Il serait également utile d’avoir la possibilité comprendre la logique. Ajoutez une ligne
de changer un budget existant. Pour ce faire, ajoutez la dans le module test.py pour appeler
méthode suivante sous la méthode budget_ajout existante. cette nouvelle méthode et la tester.
return self.disponible
NOURRITURE
GE
ÉLECTRIC
ITÉ VOYA
Pygame Zero
Pygame Zero est un outil pour créer des jeux
en langage Python. L’écriture du code est simplifiée
par les fonctions puissantes et les types de données
disponibles dans la bibliothèque pygame.
MISES À JOUR
Il arrive que les programmeurs rencontrent des problèmes
avec leurs programmes Pygame Zero après la mise à jour
de leur système d’exploitation. Pour les résoudre, il suffit
de désinstaller puis de réinstaller les outils ajoutés lors
de l’installation de Pygame Zero en suivant les instructions ARRIVÉE
ci-dessous.
Installez Pygame
3 Une fois le gestionnaire de paquets Installez Pygame Zero
« pip » installé, tapez la commande 4 Enfin, tapez la commande
ci-dessous, puis appuyez sur Entrée pour suivante, puis appuyez sur Entrée
installer la bibliothèque pygame. pour installer Pygame Zero.
ARRIVÉE
Installez des outils supplémentaires
3 Pour installer les outils dont le système a besoin pour Installez Pygame Zero
exécuter Pygame Zero, utilisez Homebrew et saisissez la
5 Pour terminer, cette
commande suivante dans la fenêtre du terminal suivie de Entrée. commande installe Pygame Zero.
Installez pygame
4 Saisissez cette
commande pour installer pip3 install pygame
la bibliothèque pygame
puis appuyez sur Entrée.
Knight’s Quest
Ce jeu au rythme effréné mettra vos réflexes à rude épreuve.
Il utilise des coordonnées pour créer une zone de jeu en deux
dimensions et la classe Actor de Pygame Zero pour créer
les personnages et les objets à collectionner dans le jeu.
Son exécution s’appuie sur une boucle d’événement.
Les cases
du damier sont
créées pour
l’arrière-plan
Les fissures
rendent le
donjon plus
réaliste
La porte peut
être créée
n’importe où
sur le pourtour
du donjon
PYTHON
Knight’s Quest 166 167
DÉBUT
Le décor
Le jeu est basé sur une grille simple
sur laquelle sont placées
des images carrées appelées Configuration du jeu
« tuiles ». Le décor du jeu se Les instructions de premier niveau du fichier
compose de cases représentant Python sont exécutées en priorité. Elles Configuration
le sol, les murs et la porte. peuvent donc initialiser l’état du jeu et du jeu
configurer Pygame Zero qui ouvrira alors une
fenêtre et répétera la boucle d’événements en
continu.
Gestion des événements d’entrée
À chaque exécution de la boucle, Pygame
Zero vérifie les événements d’entrée tels Gestion
qu’une touche pressée, un bouton appuyé des événements
GARDE d’entrée
ou les mouvements de la souris. Il appelle
le gestionnaire approprié (voir p. 173)
dès qu’un tel événement se produit.
Configuration
1 Pour démarrer avec ce projet, vous devez
créer les dossiers qui contiendront tous les fichiers.
L’étape suivante sera d’écrire le code pour dessiner
l’arrière-plan et les joueurs à l’écran.
IDLE
ELOPPER ELOPPER
DÉ V DÉ V
ER
ER
ÉCRIRE
ÉCRIRE
ITÉRATION 1 ITÉRATION 2
TEST
TEST
def draw():
draw_background()
pgzrun.go()
D est
SORTIE À L’ÉCRAN la porte
PYTHON
Knight’s Quest 170 171
1.6 AJOUTEZ UNE FONCTION POUR DESSINER LE DÉCOR
Ajoutez la fonction draw_scenery() au-dessus de la cette chaîne de caractères avec [x] sélectionne l’élément
fonction draw() pour dessiner l’arrière-plan de chaque case sur représenté sur la case de la colonne X (également à partir
la carte. Puisque cette dernière est une liste de chaînes de caractères, de 0). Le deuxième index est écrit immédiatement après
MAP[y] représente la ligne de grille y (à partir de 0). L’indexation de le premier sous la forme MAP[y][x].
screen.blit("floor1", screen_coords(x, y)
Boucle sur chaque
def draw_scenery(): position de la grille
for y in range(GRID_HEIGHT):
for x in range(GRID_WIDTH): Extrait l’élément
présent sur cette
square = MAP[y][x] position de grille
Dessine un carreau
if square == "W": à la position
d’écran
screen.blit("wall", screen_coords(x, y)) représentée par W
LA CLASSE ACTOR
Pygame Zero fournit une classe appelée Actor pour référence. Il s’agit de deux chaînes
représenter les acteurs, ou les objets mobiles dans les de caractères, la première donnant le point
jeux. Vous pouvez créer un objet Actor avec le nom de d’ancrage x (« left », « middle » ou « right »)
l’image à utiliser pour le dessiner, en ajoutant et la seconde le point d’ancrage y (« top »,
éventuellement des mots-clés pour spécifier d’autres « middle » ou « bottom »). Vous allez définir
propriétés de l’objet. La propriété la plus importante est cette propriété sur le coin supérieur gauche
pos, qui spécifie les coordonnées d’écran sur lesquelles de l’image, car elle correspond aux
l’image doit être dessinée. La propriété anchor spécifie coordonnées renvoyées par la fonction
à quel point de l’image les coordonnées de position font screen_coords().
MIDDLE Il y a 9 points
d’ancrage
en tout
OUI
La case est-elle
un mur ?
NON
OUI
La case est-elle
une porte ?
NON
Organigramme de la logique
des déplacements
Lorsque l’utilisateur appuie sur
une touche fléchée, l’acteur joueur se Définir la nouvelle
déplace d’une case dans cette direction, FIN
position en (x, y)
sauf si celle-ci est occupée par un mur
ou la porte.
DÉPLACEMENTS DU JOUEUR
(0, 1)
Définit keys_to_collect
comme une variable globale
def setup_game():
global player, keys_to_collect
player = Actor("player", anchor=("left", "top"))
keys_to_collect = [] Définit keys_to_
collect comme une liste
for y in range(GRID_HEIGHT): initialement vide
for x in range(GRID_WIDTH):
square = MAP[y][x]
if square == "P":
player.pos = screen_coords(x, y)
Crée une clé si la case
elif square == "K": est un K
Crée l’acteur clé
key = Actor("key", anchor=("left", "top"), \ avec une image,
un ancrage
et une position
pos=screen_coords(x, y))
Ajoute cet acteur
keys_to_collect.append(key) à la liste des clés
créées ci-dessus
AJOUTEZ LES CLÉS
Vérifie si la liste
keys_to_collect
n’est pas vide
def setup_game():
global game_over, player, keys_to_collect
game_over = False Définit
la variable
player = Actor("player", anchor=("left", "top")) sur False
initialement
keys_to_collect = []
for y in range(GRID_HEIGHT):
3.4 DÉCLENCHEZ
LE GAME OVER
Vous allez maintenant régler la
fin du jeu lorsque le joueur arrive
à la porte. Modifiez la fonction def move_player(dx, dy):
move_player() puis testez le
programme. Vous ne devriez global game_over
plus pouvoir bouger lorsque
if game_over: Vérifie si game_over
vous arrivez à la porte, le
est défini
programme ne plante plus.
return La fonction
s’interrompt,
(x, y) = grid_coords(player) sans
déplacement
x += dx
y += dy
square = MAP[y][x]
if square == "W":
return
Définit
elif square == "D": game_over
sur True
if len(keys_to_collect) > 0: et continue le
déplacement
return Vérifie si toutes
les clés ont été
ramassées
else:
game_over = True
for key in keys_to_collect:
ENREGISTRER
AJOUTEZ LES CLÉS
def setup_game():
global game_over, player, keys_to_collect, guards
game_over = False
player = Actor("player", anchor=("left", "top"))
keys_to_collect = []
Définit guards avec
guards = [] une liste initialement vide
for y in range(GRID_HEIGHT):
for x in range(GRID_WIDTH):
square = MAP[y][x]
if square == "P":
player.pos = screen_coords(x, y)
elif square == "K":
key = Actor("key", anchor=("left", "top"), \
pos=screen_coords(x, y))
keys_to_collect.append(key) Crée l’acteur
guard
elif square == "G":
guard = Actor("guard", anchor=("left", "top"), \
pos=screen_coords(x, y))
guards.append(guard)
ENREGISTRER
DÉPLACEMENTS DES GARDES
OUI
Le jeu est-il terminé ?
NON
Récupérer la position
du garde sur la grille
Récupérer la position
du joueur sur la grille
Terminer le jeu
NON
FIN
PYTHON
Knight’s Quest 180 181
4.1 AJOUTEZ UNE FONCTION POUR DÉPLACER LE GARDE
Vérifie si le joueur
Ajoutez la fonction move_guard() qui doit déplacer
n’importe quel acteur garde. Vous allez donc lui transmettre Récupère est à droite du
les coordonnées du garde sur lequel elle doit agir. Ajoutez le code la position garde et si la case
suivant immédiatement après la fonction move_player(). du joueur à droite est un mur
break
player.pos = screen_coords(x, y)
def move_guard(guard):
Définit game_over
global game_over comme variable globale
setup_game()
clock.schedule_interval(move_guards, GUARD_MOVE_INTERVAL)
pgzrun.go()
L’OBJET CLOCK
L’objet clock fournit des méthodes pour planifier les fonction, saisissez son nom sans les parenthèses, car
appels de fonction dans un programme, notamment il n’y a aucun moyen de connaître quels arguments
celles présentées ci-dessous. Pour appeler une seront utilisés lors de son futur appel.
def setup_game():
global game_over, player_won, player, keys_to_collect, guards
game_over = False
Définit la variable comme
player_won = False False initialement
5.1 DÉFINISSEZ
UNE VARIABLE
Maintenant, définissez la variable
def move_player(dx, dy):
globale lorsque le jeu se termine
alors que le joueur a atteint la porte
global game_over, player_won
avec toutes les clés. Ajoutez ce
code à la fonction move_ if game_over:
player().
return
(x, y) = grid_coords(player)
x += dx
y += dy
square = MAP[y][x]
if square == "W":
return
elif square == "D":
if len(keys_to_collect) > 0:
return
else:
game_over = True
Définissez-la en True quand player_won = True
le joueur gagne le jeu
for key in keys_to_collect:
SUIVI DU RÉSULTAT
Utilisez différentes
couleurs pour faire
ressortir les différents
résultats
ENREGISTRER
if game_over:
draw_game_over()
def on_key_up(key):
Vérifie si la barre d’espace a été
if key == keys.SPACE and game_over: activée une fois le jeu terminé
else:
screen.draw.text("Vous avez perdu!", midtop=screen_middle, \
fontsize=GRID_SIZE, color="red", owidth=1)
screen.draw.text("Appuyez sur la barre d’espace pour redémarrer", \
midtop=(WIDTH / 2, HEIGHT / 2 + GRID_SIZE), \
Affiche le nouveau
message à l’écran fontsize=GRID_SIZE / 2, color="cyan", owidth=1)
ANIMATIONS
La fonction animate() peut recevoir deux et on_finished, qui vous permet de spécifier
autres arguments facultatifs : tween, qui le nom d’une fonction que vous souhaitez appeler
spécifie comment animer les valeurs à la fin de l’animation. La valeur de tween doit être
intermédiaires de la propriété, l’une des chaînes mentionnées ci-dessous.
GUARD_MOVE_INTERVAL = 0.5
Temps nécessaire à l’acteur
PLAYER_MOVE_INTERVAL = 0.1
player pour passer
d’une position à une autre
keys_to_collect.remove(key)
break
animate(player, pos=screen_coords(x, y), \ Met à jour la
position du joueur
duration=PLAYER_MOVE_INTERVAL) après 0,1 seconde
ENREGISTRER
PYTHON
Knight’s Quest 186 187
Créer un damier en arrière-plan
7 Reprenons certains des éléments graphiques
précédents et voyons si nous pouvons rendre le jeu
un peu plus intéressant. Pour le moment, l’arrière-plan
est constitué de la même case répétée sur tout le sol.
Ajoutez un motif de damier pour donner au sol un aspect
« carrelage ».
def draw_background():
for y in range(GRID_HEIGHT):
Vérifie si les valeurs x Dessine la case floor1
for x in range(GRID_WIDTH): et y sont toutes à cette position si
les deux impaires la condition ci-dessus
if x % 2 == y % 2: ou paires est vraie
def draw_background():
random.seed(BACKGROUND_SEED)
for y in range(GRID_HEIGHT):
for x in range(GRID_WIDTH):
if x % 2 == y % 2:
screen.blit("floor1", screen_coords(x, y))
else:
screen.blit("floor2", screen_coords(x, y)) Choisit un
nombre aléatoire
n = random.randint(0, 99) entre 0 et 99
Récupère un entier
n = random.randint(0, 99) aléatoire entre
0 et 99
if n < 5:
screen.blit("crack1", screen_coords(x, y)) Dessine crack1 si n
se situe entre 0 et 4
elif n < 10:
screen.blit("crack2", screen_coords(x, y)) Dessine crack2 si n
se situe entre 5 et 9
Déplacez le joueur
rapidement pour
récupérer toutes les clés.
Attention aux gardes
ENREGISTRER
Trucs et astuces
Ouvrir la porte
Les utilisateurs vont immédiatement se rendre compte qu’ils cela deviendra évident. La meilleure façon de
doivent collecter des clés, mais ils ne comprendront pas le faire est de ne dessiner la porte que lorsqu’il
forcément quand il sera possible de quitter le donjon. Si vous reste des clés à collecter. Modifiez la fonction
ouvrez visuellement la porte dès que la dernière clé est collectée, draw_scenery() comme indiqué ci-dessous.
Continue de bouger !
Il serait intéressant que le joueur se déplace de façon continue move_player() comme indiqué ici. Ajoutez ensuite la fonction
lorsqu’une touche fléchée est maintenue enfoncée, plutôt repeat_player_move() sous cette dernière. Elle utilise
que d’être obligé de l’enfoncer de façon répétitive. L’argument des membres de l’objet keyboard de Pygame Zero pour vérifier
on_finished de la fonction animate() permet justement si une touche particulière est pressée. Si vous trouvez que le jeu
à l’utilisateur de spécifier quelle fonction doit être appelée est maintenant trop facile, modifiez la constante PLAYER_MOVE_
à la fin du mouvement de l’acteur. Modifiez la fonction INTERVAL pour ralentir le joueur et rendre le jeu plus difficile.
move_player(1, 0)
Le joueur va maintenant
elif keyboard.down:
se déplacer en continu
dans la direction choisie
move_player(0, 1)
PYTHON
Knight’s Quest 190 191
Téléchargez de nouveaux
personnages
Vous pouvez télécharger vos
propres images pour ajouter
différents personnages au jeu,
ou configurer un arrière-plan
complètement nouveau.
Copiez les nouvelles images
dans le dossier « images »
créé précédemment. Modifiez
ensuite le code de sorte que
les noms d’image de l’acteur
correspondent aux nouveaux ENNEMI JOUEUR OBJET
noms de fichiers.
LES AUTEURS
Clif Kussmaul est consultant principal chez Green Dr Tammy Pirmann est professeure d’informatique au
Mango Associates, LLC, où il conçoit et met en œuvre College of Computing and Informatics de l’université
des projets de recherche, des ateliers de développement Drexel de Philadelphie (États-Unis). Reconnue pour son
pédagogiques et des activités scolaires. Il a enseigné action sur l’équité dans l’enseignement de l’informatique
pendant 20 ans en université et a travaillé à temps plein et pour sa promotion de la recherche guidée, elle a été
et à temps partiel dans le développement de logiciels coprésidente du Standards Committee de la Computer
et le conseil. Science Teachers Association et conseillère pour le K12
CS Framework.
Sean McManus a écrit et co-écrit des livres sur la
programmation, notamment Mission Python, Scratch Dr Martin Goodfellow est maître de conférences au
Programming in Easy Steps, Cool Scratch Projects in Easy département des sciences de l’informatique de l’université
Steps et Raspberry Pi For Dummies. de Strathclyde. Il a également développé du contenu
pédagogique et organisé des ateliers d’informatique pour
Craig Steele est un spécialiste en enseignement d’autres organisations dans le monde entier, notamment
de l’informatique qui aide les gens à développer leurs Google, Oracle, CoderDojo Scotland, Glasgow Life,
compétences numériques dans un environnement Makeblock et la BBC.
amusant et créatif. Il dirige Digital Skills Education et
il fait partie des fondateurs de CoderDojo en Écosse, Jonathan Hogg est un artiste audiovisuel qui a passé la
qui gère des clubs de programmation gratuits pour les dernière décennie à construire des œuvres à partir
jeunes. Craig a organisé des ateliers numériques avec de combinaisons de logiciels, d’électronique, de son,
la Raspberry Pi Foundation, le Glasgow Science Centre, de lumière, de bois, de plastique et de métal. Il travaille
la Glasgow School of Art et le projet BBC micro:bit. souvent avec des jeunes, animant des ateliers créatifs
et techniques. Il a commencé sa carrière dans la
Dr Claire Quigley a étudié l’informatique à l’université recherche et l’enseignement de l’informatique à
de Glasgow, où elle a obtenu une licence et un doctorat. l’université de Glasgow.
Elle a travaillé au laboratoire d’informatique de l’université
de Cambridge et au Glasgow Science Center. Elle est David Krowitz a appris à programmer au début
actuellement coordinatrice STEM chez Glasgow Life et des années 80 sur un Commodore VIC-20 branché sur
enseigne à temps partiel au Conservatoire royal d’Écosse, un téléviseur noir et blanc portable. Depuis, il étudie et
en collaboration avec des étudiants en musique (BEd). pratique la programmation. Aujourd’hui, Dave consacre
Claire participe à la gestion de CoderDojo Scotland depuis son temps à créer une architecture de microservices
sa création en 2012. pour les entreprises. C’est un inconditionnel des modèles
de conception orientés objet et de l’architecture logicielle.