# Indentations --- ## Algorithme verbeux ```pseudocode DEBUT REPETER 3 FOIS avancer de 100 tourner à droite de 120 degrés FIN FIN ``` ```pseudocode DEBUT REPETER 3 FOIS avancer de 100 FIN tourner à droite de 120 degrés FIN ``` La différence est facile à comprendre. --- * Dans le cas précédent, les blocs sont très explicites. On écrit notamment le mot **fin**. C'est un peu lourd. * La plupart des langages utilisent les accolades ```c[1-3] for (i = 1; i < 11; ++i){ printf("%d ", i); } ``` Python repose entièrement sur les indentations (marge en début de ligne) --- ### Ouverture de block Quand un élément de structure comme `for`, `if`, `else`, `while`... demande l'ouverture d'un bloc, la ligne **doit** terminer par `:` ```python[1-3] tot = 0 for i in range(10): # : annonce le début de bloc tot += i # indentation plus grande ``` La première ligne du bloc a une indentation plus grande --- ### fermeture du bloc Quand le bloc se referme, on doit revenir à une indentations inférieure déjà rencontrée avant. ```python[1-5] tot = 0 for i in range(10): if i%2 == 0: tot += i print(tot) # indentation diminue : fin de bloc ``` En ligne 5, l'indentation est moindre qu'en 4. On a donc fermé un bloc. Comme la ligne 5 a la même indentation que `for` en ligne 2, alors on a même fermé 2 blocs (le `for` et le `if`) --- ### Exemple de fermeture fausse ```python[1-5] tot = 0 for i in range(10): if i%2 == 0: tot += i print(tot) # indentation diminue mais tombe mal ``` À la ligne 5, l'indentation a diminué. On a donc fermé un bloc. Mais le mot `print` n'est aligné avec rien. C'est faux. Python renverra `Indentation Error`.