cClaude.rocks ☕ Le blog

[Nouvelles technologies du libre, sciences et coups de gueule…]

Menu

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.

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

኿


â„č 2006 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog