From 54ded9cab4b5fc0a31887795aa35850a7ae5fea8 Mon Sep 17 00:00:00 2001 From: Dimitri Merejkowsky Date: Sat, 10 Nov 2018 15:38:53 +0100 Subject: [PATCH] Initial commit --- README.md | 11 +++ notes.md | 15 ++++ sessions/01.md | 155 ++++++++++++++++++++++++++++++++++++ sessions/02.md | 61 ++++++++++++++ sources/01-bonjour.py | 1 + sources/02-add.py | 8 ++ sources/03-devine-nombre.py | 16 ++++ 7 files changed, 267 insertions(+) create mode 100644 README.md create mode 100644 notes.md create mode 100644 sessions/01.md create mode 100644 sessions/02.md create mode 100644 sources/01-bonjour.py create mode 100644 sources/02-add.py create mode 100644 sources/03-devine-nombre.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..522dbea --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# Cours Python pour E2L + +## Plan + +* [01 - introduction](sessions/01.md) +* [02 - plus de concepts](sessions/02.md) + + +## Notes + +* [notes](notes.md) diff --git a/notes.md b/notes.md new file mode 100644 index 0000000..95937ad --- /dev/null +++ b/notes.md @@ -0,0 +1,15 @@ +# Cours Python + +Sessions: + +* [01](sessions/01.md) +* [02](sessions/02.md) + +# Idées d'ateliers + +* Effets audio +* Jeux vidéos (pygame) +* IOT : micro-controller, Rasberry Pi +* Blender/GIMP +* Parse RSS and download mp3: https://github.com/yannicklm/pypodget/blob/master/pypodget +* Stéganographie: cacher un texte dans une image diff --git a/sessions/01.md b/sessions/01.md new file mode 100644 index 0000000..a9dcccb --- /dev/null +++ b/sessions/01.md @@ -0,0 +1,155 @@ +### Introduction + +* Historique du langage: + + * création par Guido pour l'enseignement + * Monty Python + * le grand schisme 2/3. + +* Utilisation de Python + + * Sciences (physique, chimie ...) + * Animation + * Sites web + * ... + * Ligne de commande + * Langage de 'glue' + +### Le REPL + +* S'assurer que tous les étudiants peuvent lancer le REPL + +Notions: + +* Entiers et flottants (via maths basiques: + * - /) +* Grouper avec des parenthèses. +* Booléens +* Variables +* Fonctions: + + * `quit()` + + + +### Du code dans un fichier + +Oups, les variables disparaissent quand on ferme le REPL. +Solution: les mettre dans un fichier `.py`. + +``` +a = 1 +b = 2 + +c = a+b + +print(c) +``` + +S'assurer que les étudiants peuvent: + +* `cd` dans le bon répertoire +* Lancer `python secret: + print("Trop grand") + if response < secret: + print("Trop petit") + print("Gagné") + break +``` + +Notions: + +* Exceptions: si la conversion échoue + +``` +improt random + +secret = random.randint(100) + +``` + + +Notions: + +* imports +* accès à un membre avec `.` + +* Fin! diff --git a/sessions/02.md b/sessions/02.md new file mode 100644 index 0000000..1702e20 --- /dev/null +++ b/sessions/02.md @@ -0,0 +1,61 @@ +À chaque fois, on peut faire une démo dans le repl + +# Listes + + +* slices +* `len()` +* append, extend, insert, remove, pop, clear +* index, count, sort, reverse + +* Liste par compréhension +* Filtrage dans une compréhension + + +# Tuples + +* Attention, c'est la virgule qui fait le tuple, pas les parenthèses! + + +# Dictionnaires + +* Itération sur un dictionnaire +* Itérer sur les clés et valeurs en même temps + +# Ensembles + +* Compréhensions +* Les doublons sont éliminés + +``` +s = { 1, 2, 2, 3} +s +``` + +* `.add()` pour un ensemble + +``` +s.add(1) +s +s.add(4) +s +``` + +* différence, union + +# Mutabilité + +* Objets modifiables ou non +* sort() version sorted() +* Copie +* Passage par référence dans les fonctions +* Différence `+=` versus `append()` + +# Fonctions avancées + +* arguments par défaut +* arguments nommés +* arguments arbitraires (`*args`, `**kwargs`). +* Chaînes de documentation + +# Modules, packages diff --git a/sources/01-bonjour.py b/sources/01-bonjour.py new file mode 100644 index 0000000..48f9aac --- /dev/null +++ b/sources/01-bonjour.py @@ -0,0 +1 @@ +print("bonjour, monde!") diff --git a/sources/02-add.py b/sources/02-add.py new file mode 100644 index 0000000..e882fe9 --- /dev/null +++ b/sources/02-add.py @@ -0,0 +1,8 @@ +# ceci est un commentaire +def add(a, b): + return a + b + +a = 1 +b = 2 +c = add(a, b) +print(c) diff --git a/sources/03-devine-nombre.py b/sources/03-devine-nombre.py new file mode 100644 index 0000000..e7b9b2f --- /dev/null +++ b/sources/03-devine-nombre.py @@ -0,0 +1,16 @@ +import random + +secret = random.randint(0, 100) + +print("Devine le nombre auquel je pense") +while True: + response = input() + response = int(response) + if response > secret: + print("Trop grand") + continue + if response < secret: + print("Trop petit") + continue + print("Gagné") + break