Skip to content
Snippets Groups Projects
00-jupyter-indentation.md 4.03 KiB
Newer Older
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
---
jupytext:
  text_representation:
    extension: .md
    format_name: myst
    format_version: 0.13
kernelspec:
  display_name: Python 3 (ipykernel)
  language: python
  name: python3
---

+++ {"deletable": false, "editable": false}

# Jupyter : l'indentation

:::{admonition} Objectifs pédagogiques

- apprendre à indenter efficacement le code
- renforcer l'utilisation du clavier vue dans le tutoriel [se
  débarrasser de sa souris](../Semaine6/00-jupyter-jeter-sa-souris.md).

:::

:::{admonition} Définition

L'***indentation*** consiste à mettre en valeur la structure
du code en commençant chaque ligne par un nombre d'espaces
proportionnel à la profondeur d'imbrication dans les blocs de
code. Cela permet d'en améliorer la lisibilité. Dans certains langages
comme Python, cette indentation dénote à elle seule la structure en
blocs et est donc requise.

:::

+++ {"deletable": false, "editable": false}

## Observation

Voici deux cellules. Placez votre curseur à la fin de la ligne de
chacune et tapez <kbd>Entrée</kbd> :

```{code-cell}
for ligne in Monfichier
```

```{code-cell}
for ligne in Monfichier:
```

Eh oui! Comme la plupart des éditeurs de code, l'éditeur de Jupyter a
automatiquement proposé une indentation adaptée au contexte au moment
du retour à la ligne. En Python, cette indentation est plus
qu'esthétique, elle est nécessaire. Voyez plutôt ci-après.

**Exemple :**

Exécutez les deux cellules suivantes :

```{code-cell}
Maliste=["I","love","Python"]
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
for ligne in Maliste:
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
    print(ligne)
```

```{code-cell}
Maliste=["I","love","Python"]
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
for ligne in Maliste:
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
print(ligne)
```

Ouf! Une erreur signale ici l'indentation incorrecte. Mais ce ne sera
pas toujours le cas :

```{code-cell}
Maliste = ["I", "love", "Python"]
for ligne in range (0, len(Maliste)):
    a = ligne  # instruction diverses
    print("Maliste contient ", a, " : ", Maliste[a])
```

ne produit pas le même résultat que :

```{code-cell}
Maliste=["I", "love", "Python"]
for ligne in range (0, len(Maliste)):
    a = ligne  # instruction diverses
print("Maliste contient ", a, " : ", Maliste[a])
```

Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
+++ {"deletable": false, "editable": false}
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed

## Exercice

Indentez correctement la table des matières ci-dessous en utilisant
seulement le clavier (pour réviser, voir le tutoriel [se débarrasser
de sa souris](../Semaine6/00-jupyter-jeter-sa-souris.md)).

:::{admonition} Raccourcis clavier

Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
* Utilisez <kbd>Tab</kbd> pour indenter.
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
* Pour désindenter utilisez <kbd>Maj</kbd>+<kbd>Tab</kbd>.
* Pour indenter ou désindenter plusieurs lignes d'un coup,
  sélectionnez les avec <kbd>Maj</kbd>+<kbd></kbd> ou <kbd></kbd>
  puis utilisez <kbd>Tab</kbd> ou <kbd>Maj</kbd>+<kbd>Tab</kbd>.

:::

Voici le résultat attendu : 
* TITRE
    * Titre 1
        * Titre 1.1
    * Titre 2
        * Titre 2.1
            * Titre 2.1.1
            * Titre 2.1.2
        * Titre 2.2
        * Titre 2.3
        * Titre 2.4
            * Titre 2.4.1
    * Titre 3
        * Titre 3.1
        * Titre 3.2

+++ {"deletable": false}

* TITRE
* Titre 1
* Titre 1.1
* Titre 2
* Titre 2.1
* Titre 2.1.1
* Titre 2.1.2
* Titre 2.2
* Titre 2.3
* Titre 2.4
* Titre 2.4.1
* Titre 3
* Titre 3.1
* Titre 3.2

+++ {"deletable": false, "editable": false}

## Conclusion

Une bonne indentation est essentielle à la lisibilité du code, voire
même à sa correction. Aussi les éditeurs de texte offrent-t-ils des
outils pour la vérifier et l'ajuster efficacement. Il convient de les
maîtriser. Au delà de la programmation, cela s'applique à l'édition de
tout **texte structuré** : Markdown, HTML, etc.

+++ {"deletable": false}

## Acquis

Pour valider les acquis ci-dessous, entrez en mode édition, puis
placez un "x" à la place de l'espace entre les crochets.

- [ ] Une indentation est nécessaire pour faire fonctionner les boucles en Python
- [ ] Indenter différemment un script va produire des résultats différents
- [ ] Je dois toujours relire mon script et vérifier mes sorties
- [ ] Je maîtrise la sélection et indentation multiple
- [ ] J'ai réussi à utiliser uniquement le clavier