Enseigner avec Jupyter#
Les carnets Jupyter sont de bons outils d’enseignement.
Scénario 1#
L’alternance de cellules de code et de cellules de texte formaté pour expliquer un langage informatique.
Exemple#
Une liste Python est un conteneur d’objets Python de type différent.
[1, 2, 3] # liste de trois entiers
[1, "bonjour", 3.2] # liste de trois éléments de type différent
[1, 2, ["a", "b", "c"]] # Liste contenant une liste comme élément
[1, 2, ['a', 'b', 'c']]
La méthode append() permet d’ajouter un élément à une liste.
l1 = [1, 2, 3]
l1.append(4)
Scénario 2#
Utilisation des carnets Jupyter pour organiser des exercices de programmation en classe. Les instructions sont décrites dans des cellules de texte formaté et les étudiant(e)s sont invités à suivre ces instructions pour résoudre des problèmes dans des cellules de code vides ou partiellement remplies.
Exemple#
Coder une fonction qui retourne la somme des entiers positifs pairs inférieurs ou égale à \(n\). Le paramètre d’entrée de la fonction est \(n\). Si ce paramètre n’est pas une valeur numérique positive ou nulle, la fonction renvoie \(-1\).
def volume_cylindre(rayon, hauteur):
pass # placer le code ici à la placce de l'instruction pass
Pour tester votre code, exécuter les assertions suivantes, elles ne doivent pas lever d’exception si votre fonction répond au cahier des charges.
assert somme_paire(0) == 0
assert somme_paire(2) == 2
assert somme_paire(10) == 30
assert somme_paire(100) == 2550
assert somme_paire(12.2) == 42
assert somme_paire("8") == -1
Proposition d’une solution
def somme_paire(n):
"""Renvoie la somme des entiers positifs paires inférieur a n."""
res = -1
if isinstance(n, (float, int)):
if n >= 0:
res = sum([i for i in range(0, int(n)+1, 2)])
return res
Scénario 3#
L’interactivité d’un carnet Jupyter permet des explorations de données en ligne.
Exemple#
La base de toutes les adresses postales de France est disponible sur l’API http https://adresse.data.gouv.fr/api-doc/adresse
Le code suivant envoie une requête et affiche les 5 premiers résultats. La requête paramétrable en adaptant le dictionnaire params.
import requests
import pandas
api_url="https://api-adresse.data.gouv.fr/search/"
params = {
"q": "avenue",
"limit": 100,
"type": "street", # housenumber, street, locality, municipality
"postcode": 91190,
}
data_json = requests.get(api_url, params=params).json()
data_frame = pandas.json_normalize(data_json["features"])
print(len(data_frame), "réponses obtenues")
34 réponses obtenues
data_frame.head(5)
| type | geometry.type | geometry.coordinates | properties.label | properties.score | properties.id | properties.name | properties.postcode | properties.citycode | properties.x | properties.y | properties.city | properties.context | properties.type | properties.importance | properties.street | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Feature | Point | [2.116187, 48.704444] | Avenue du Génèral Leclerc 91190 Gif-sur-Yvette | 0.882027 | 91272_1260 | Avenue du Génèral Leclerc | 91190 | 91272 | 634963.33 | 6845286.41 | Gif-sur-Yvette | 91, Essonne, Île-de-France | street | 0.70230 | Avenue du Génèral Leclerc |
| 1 | Feature | Point | [2.115624, 48.694571] | Avenue du Panorama 91190 Gif-sur-Yvette | 0.877754 | 91272_1930 | Avenue du Panorama | 91190 | 91272 | 634909.61 | 6844189.27 | Gif-sur-Yvette | 91, Essonne, Île-de-France | street | 0.65529 | Avenue du Panorama |
| 2 | Feature | Point | [2.115367, 48.693057] | Avenue Centrale 91190 Gif-sur-Yvette | 0.876670 | 91272_0470 | Avenue Centrale | 91190 | 91272 | 634888.81 | 6844021.17 | Gif-sur-Yvette | 91, Essonne, Île-de-France | street | 0.64337 | Avenue Centrale |
| 3 | Feature | Point | [2.125022, 48.710608] | Avenue du Bois des Roches 91190 Gif-sur-Yvette | 0.875477 | 91272_0380 | Avenue du Bois des Roches | 91190 | 91272 | 635621.04 | 6845964.45 | Gif-sur-Yvette | 91, Essonne, Île-de-France | street | 0.63025 | Avenue du Bois des Roches |
| 4 | Feature | Point | [2.118026, 48.692642] | Avenue des Carrières 91190 Gif-sur-Yvette | 0.875477 | 91272_0450 | Avenue des Carrières | 91190 | 91272 | 635084.00 | 6843972.84 | Gif-sur-Yvette | 91, Essonne, Île-de-France | street | 0.63025 | Avenue des Carrières |