====== Syntaxe des structures algorithmiques en Python ====== {{ :nsi:premiere:algorithme:algorithme_structures_python.eleves.pdf |Version imprimable}} Par **syntaxe**, comprenez : //bonne façon d'écrire//. En Python **tous** les blocs de structure ont une déclaration avec ''%%:%%'' en fin de ligne. De plus, en Python, on n'écrit pas **fin** ou **end** pour indiquer la fin d'un bloc. Le début du bloc est annoncé par ''%%:%%'' qui est forcément suivi d'une **indentation** //marge à gauche//. C'est l'indentation qui permet de savoir quand le bloc se termine. Vous pouvez constater que cela produit une écriture allégée et lisible. C'est une des qualités de Python. ===== Conditions ===== Les structures à suivre font référence à des conditions. Ces conditions consistent à tester si tel quantité est égale, différente ou supérieure à telle autre. On a donc besoin de symboles pour exprimer ces tests. * ''%%==%%'' : égal à. Exemple ''%%x == 17%%''. * ''%%!=%%'' : différent de. Exemple ''%%x != 17%%''. * ''%%<%%'' : strictement inférieur à. Exemple ''%%x < 17%%''. * ''%%<=%%'' : inférieur ou égal à. Exemple ''%%x <= 17%%''. * ''%%>%%'' : strictement supérieur à. Exemple ''%%x > 17%%''. * ''%%>=%%'' : supérieur ou égal à. Exemple ''%%x >= 17%%''. ===== SI 🠒 if ===== SI condition ALORS instruction 1 instruction 2 ... FIN suite... if condition: instruction 1 instruction 2 ... suite... Il n'y a pas de contraintes pour l'indentation : 1 espace, 2, 3... Vous ferez l'effort de toujours mettre 4 espaces pour un code plus propre. ===== SI... SINON 🠒 if... else ===== SI condition ALORS instruction 1 instruction 2 ... SINON instruction a instruction b ... FIN suite... if condition: instruction 1 instruction 2 ... else: instruction a instruction b ... suite... ===== TANT QUE... RÉPÉTER 🠒 while ===== TANT QUE condition RÉPÉTER instruction 1 instruction 2 ... FIN suite... while condition: instruction 1 instruction 2 ... suite... ===== POUR CHAQUE... FAIRE 🠒 for... in ===== POUR CHAQUE élément DANS ensemble FAIRE instruction 1 instruction 2 ... FIN suite... for élément in ensemble: instruction 1 instruction 2 ... suite... Python permet l'utilisation d'accents. ''%%élément%%'' est donc permis. Mais en général on préfère éviter et il est aussi courant d'utiliser des mots en anglais, donc sans accents. Vous pouvez remarquer que dans l'exemple ci-dessus, les ''%%é%%'' ne sont pas colorés comme ils devraient. C'est un problème que l'on rencontre dans les environnements de développement Python : Si on utilise des accents pour certains noms, la coloration syntaxique ne fonctionne pas bien. Pourtant, le programme est juste et fonctionnera correctement. ===== RÉPÉTER n FOIS 🠒 for i in range(n) ===== Il n'y a pas de structure exprès pour ''RÉPÉTER n FOIS'' mais on peut y arriver avec la boucle ''for''. RÉPÉTER n FOIS instruction 1 instruction 2 ... FIN suite... for i in range(n): instruction 1 instruction 2 ... suite... ''%%range%%'' est un outil qui reviendra souvent. Il permet de créer une sorte d'ensemble : ''%%range(n)%%'' crée un ensemble ''%%{0, 1, 2... n-1}%%''. La variable ''%%i%%'' est utilisée comme un simple compteur. ===== POUR i ALLANT DE a À b 🠒 for i in range(a,b+1) ===== C'est la forme classique de la boucle ''POUR'' et dans beaucoup de langages, ce ''POUR'' se traduirait par un ''for''. Mais le ''for'' de Python en fait un ''POUR CHAQUE'' traduit par ''foreach'' dans certains langages. POUR i ALLANT DE a À b FAIRE instruction 1 instruction 2 ... FIN suite... for i in range(a,b+1): instruction 1 instruction 2 ... suite... ''%%range(a,b+1)%%'' crée un ensemble ''%%{a, a+1, ... b}%%'' En Python, quand une commande exprime l'idée "de a à b", b est exclu. Ainsi ''%%range(a,b)%%'' énumère les entiers de a à b, b exclu. Si on veut inclure b, il faut écrire ''%%range(a,b+1)%%''.