Le langage de programmation Python nĂ© dans les annĂ©es 1990, et comme la plupart des langages, il a Ă©voluĂ© avec le temps, la derniĂšre version de Python est la version 3 a Ă©tĂ© publiĂ©e en juin 2018 (septembre 2022 : la version Python 3.10.7 vient dâĂȘtre publiĂ©e).
Notez que la version 2 de Python est obsolĂšte et nâest plus maintenue depuis le 1er janvier 2020.
Nous nous limiterons donc Ă Python 3 dans cette sĂ©rie de billets, notez quâil sâagit de la version qui est disponible par dĂ©faut sur Raspberry.
Le langage Python est placĂ© sous une licence libre proche de la licence BSD et fonctionne sur la plupart des plateformes informatiques, des smartphones aux ordinateurs centraux, de Windows Ă Unix avec notamment GNU/Linux en passant par macOS, ou encore Android, iOS. Il peut aussi ĂȘtre traduit en Java ou .NET. Cette description nâest pas Ă prendre au pied de la lettre, car il est extrĂȘmement difficile dâavoir un code (et ce quel que soit le langage) tournant, par exemple, sur un smartphone et sur un ordinateur, tout simplement pour des raisons de prĂ©sentation. En rĂ©alitĂ©, il y a des limites fortes sur la compatibilitĂ© dâun code gĂ©rant une interface graphique Ă©voluĂ©e entre les diffĂ©rentes plateformes.
Ce billet fait partie dâune sĂ©rie de billets : #atelier-python.
- Article prĂ©cĂ©dent : đ Atelier Python â â PrĂ©sentation de lâIDE Thonny Python.
- Article suivant : đ Atelier Python âą â Nombre mystĂšre
Merci de laisser un commentaire si vous avez essayé ou fini cet atelier. Le commentaire sera publié que si vous en faite la demande.
Les boucles et lâindentation du code
De la mĂȘme maniĂšre que Scratch ou kids-lab utilisent des piles de blocs de type puzzle pour contrĂŽler quels autres morceaux de programme sont connectĂ©s Ă quels autres morceaux.
Python a sa propre façon de contrĂŽler la sĂ©quence dans laquelle ses programmes : lâindentation.
CrĂ©ez un nouveau programme en cliquant sur lâicĂŽne « Nouveau » dans la barre dâoutils Thonny. Vous ne perdrez pas votre programme existant ; en revanche, Thonny crĂ©era un nouvel onglet au-dessus de la zone de script.
On commencera par taper ce qui suit :
print("DĂ©but de la boucle")
for i in range (10):
La premiĂšre ligne imprime un message simple Ă lâinterprĂ©teur de commandes comme cela a Ă©tĂ© vu dans la premiĂšre partie. La seconde ligne deuxiĂšme ligne commence une boucle dĂ©finie par for
. Comme dans dâautre langage, il faut dĂ©finir un nom pour le compteur (i
), et les conditions de dĂ©but et de fin de la boucle. Ici on va donner une sĂ©rie de nombres : lâinstruction range
, Ă qui lâon dit de commencer par le chiffre 0 et dâavancer vers le chiffre 10, sans jamais lâatteindre. Le symbole deux-points (:
) indique Ă Python que lâinstruction suivante doit faire partie de la boucle.
En Scratch, les instructions Ă inclure dans la boucle sont littĂ©ralement incluses Ă lâintĂ©rieur du bloc en forme de C. Dans dâautres langages, il y a un marqueur de dĂ©but et de fin, par exemple : '{' et '}'. Python utilise une approche diffĂ©rente : lâindentation du code.
La ligne suivante commence par quatre espaces, que Thonny aurait dĂ» ajouter lorsque vous avez appuyĂ© sur ENTRĂE aprĂšs la ligne 2 (Attention : si vous avez fait un « copier-coller », il est possible que ces 4 espaces nâaient pas Ă©tĂ© ajoutĂ©s) :
Continuez la ligne avec :
print("Compteur de boucle", i)
Les espaces vides « poussent » cette ligne vers lâ« intĂ©rieur » par rapport aux autres lignes. Cette indentation est comment Python fait la diffĂ©rence entre les instructions Ă lâextĂ©rieur de la boucle et les instructions Ă lâintĂ©rieur de la boucle ; le code indentĂ© est connu comme Ă©tant imbriquĂ©.
Vous remarquerez que lorsque vous avez appuyĂ© sur la touche ENTRĂE Ă la fin de la troisiĂšme ligne, Thonny a automatiquement indentĂ© la ligne suivante, en supposant quâelle ferait partie de la boucle.
Pour supprimer ce retrait, il suffit dâappuyer une fois sur la touche « BACKSPACE » avant de taper la quatriĂšme ligne :
print("Boucle terminée")
Vous avez alors le programme suivant et vous pouvez cliquer sur lâicĂŽne « ExĂ©cuter » (donnez-lui un nom) :
print("DĂ©but de la boucle")
for i in range (10):
print("Compteur de boucle", i)
print("Boucle terminée")
Vous aurez le résultat suivant :
>>> %Run prog2.py
DĂ©but de la boucle
Compteur de boucle 0
Compteur de boucle 1
Compteur de boucle 2
Compteur de boucle 3
Compteur de boucle 4
Compteur de boucle 5
Compteur de boucle 6
Compteur de boucle 7
Compteur de boucle 8
Compteur de boucle 9
Boucle terminée
>>>
Compter à partir de zéro
Python est un langage lâindexation se fait Ă partir de zĂ©ro, ce qui signifie quâil commence Ă compter Ă partir de 0 et non de 1.
Câest pourquoi votre programme imprime les nombres 0 Ă 9 plutĂŽt que de 1 Ă 10. Si vous le souhaitez, vous pouvez modifier comportement en remplaçant lâinstruction range(10)
par range(1, 11)
ou tout autre ou tout autre nombre de votre choix.
Lâindentation est un Ă©lĂ©ment important de Python, et lâune des raisons les plus courantes pour lesquelles un programme ne fonctionne pas comme prĂ©vu.
Lorsque vous recherchez des problĂšmes dans un programme, vĂ©rifiez toujours deux fois lâindentation ; en particulier lorsque vous commencez Ă imbriquer des boucles dans des boucles.
Les boucles infinies
Python supporte Ă©galement les boucles infinies, qui sâexĂ©cutent sans fin. Pour remplacer dans votre programme la boucle dĂ©finie par une boucle infinie, modifiez la ligne 2 comme suit :
while True :
Cliquez sur lâicĂŽne « ExĂ©cuter » pour tester votre programme :
Attention : si vous oublier la majuscule au début du mot True
, vous aurez une erreur :
NameError: name 'true' is not defined
Vous obtenez lâerreur :
NameError: name 'i' is not defined
Cette erreur indique que « le nom 'i' nâest pas dĂ©fini ». Ceci est dĂ» au fait que vous avez supprimĂ© la ligne qui a crĂ©Ă© et assignĂ© une valeur Ă la variable i
.
Pour rĂ©soudre ce problĂšme, il suffit de modifier la ligne 3 afin quâelle nâutilise plus la variable :
print("Boucle en cours !")
Vous avez alors le programme suivant :
print("DĂ©but de la boucle")
while True:
print("Boucle en cours !")
print("Boucle terminée")
Cliquez sur lâicĂŽne « ExĂ©cuter » et, si vous ĂȘtes rapide, vous verrez le message « DĂ©but de la boucle » suivi dâune sĂ©rie interminable de messages « Boucle en cours ! ».
Le message « Boucle terminĂ©e » ne sâimprimera jamais, car la boucle nâa pas de fin : chaque fois que Python a fini dâimprimer le message « Boucle en cours ! », il revient au dĂ©but de la boucle et lâimprime Ă nouveau.
>>> %Run prog2.py
DĂ©but de la boucle
Boucle en cours !
Boucle en cours !
Boucle en cours !
Boucle en cours !
Boucle en cours !
Cliquez sur lâicĂŽne « ArrĂȘter » de la barre dâoutils de Thonny pour demander au programme dâarrĂȘter ce quâil est en train de faire, on appelle cette action interrompre le programme. Vous verrez un message apparaĂźtre dans la zone de lâinterprĂ©teur de commandes Python et le programme sâarrĂȘte sans jamais atteindre la ligne 4.
 Conditionnels et variables
Les variables, comme dans tous les langages de programmation, ne servent pas uniquement Ă contrĂŽler les boucles.
Commencez un nouveau programme en cliquant sur lâicĂŽne « Nouveau » dans le menu Thonny, puis tapez ce qui suit dans la zone de script :
userName = input ("Quel est ton nom ?")
Si vous exĂ©cuter ce programme vous observez, que dans la zone de lâinterprĂ©teur de commandes, on vous demande votre nom.
Tapez votre nom dans cette zone, puis appuyez sur ENTRĂE.
Comme il sâagit de la seule instruction de votre programme, rien dâautre ne se produira.
Pour que notre programme fasse quelque chose dâintĂ©ressant avec ce nom, nous allons ajouter une instruction conditionnelle comme suit :
if userName == "Clark Kent":
print("Je connais ton secret ! Tu es Superman !")
else:
print("Je ne sais pas qui tu es.")
Faites attention Ă lâindentation !
Ce programme affichera « Je connais ton secret ! Tu es Superman ! » que si le nom donné est exactement Clark Kent
, sinon il affichera « Je ne sais pas qui tu es. »
Les symboles ==
indiquent Ă Python dâeffectuer une comparaison directe, en cherchant Ă savoir si la variable userName
correspond au texte de votre programme. Ce « texte » appelé chaßne de caractÚre (ou « string » en anglais).
Si vous travaillez avec des nombres, vous pouvez effectuer dâautres comparaisons :
>
pour savoir si un nombre est supérieur à un autre nombre,<
pour savoir sâil est infĂ©rieur Ă ,=>
pour savoir sâil est Ă©gal ou supĂ©rieur Ă ,=<
pour savoir sâil est Ă©gal ou infĂ©rieur Ă .
Il y a aussi !=
, qui signifie non Ă©gal Ă et qui est lâexact opposĂ© de lâopĂ©rateur ==
(et qui du coup fonctionne Ă©galement pour les chaĂźnes de caractĂšres).
Ces symboles sont techniquement connus sous le nom dâopĂ©rateurs de comparaison.
Il est souvent nécessaire de combiner les opérateurs de comparaison et les boucles. Adapter votre programme comme suit :
userName = input ("Quel est ton nom ?")
while userName != "Clark Kent":
print("Tu nâes pas Superman. Essais encore !")
userName = input ("Quel est ton nom ?")
print("Je connais ton secret ! Tu es Superman !")
Cette fois le programme ne sâarrĂȘtera que lorsque la rĂ©ponse donnĂ©e sera Clark Kent
.
RĂ©sumons
Dans cet atelier, on a vu :
- Comment faire des boucles définies, infinies et conditionnelles.
- La notion dâindentation extrĂȘmement importante dans Python, puisquâelle permet dâavoir des blocs imbriquĂ©s.
- Que le langage est sensible Ă la casse (majuscules/minuscules).
- Comment initialiser une variable.
Liens
- Python 3 : objectif jeux sur le site de Didier MĂŒller, IngĂ©nieur informaticien EPFL, enseignant de mathĂ©matiques et dâinformatique en suisse.
- Python Documentation by Version
኿