|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561 |
- % Programmation avec Python (chapitre 1)
- % Dimitri Merejkowsky
-
-
- # Plan
-
- * La ligne de commande
- * Présentation et historique du langage
- * L'interpréteur interactif
- * Un jeu simple
-
-
- \center \huge La ligne de commande
-
- # Pourquoi la ligne de commande?
-
- * Très puissant
- * Ancien, mais toujours d'actualité
- * Indispensable dans de nombreux cas
- * Écrire des programmes qui marche dans la ligne de commande est (relativement) simple
- * Possibilités infines, même si on ne fait que manipuler du texte
-
- # Les bases
-
-
- On tape un commande, on appuie sur entrée, l'ordinateur interprète ce qui a été tapé et affiche un message:
-
- * `cd`
- * `ls` (ou `dir` sous Windows)
- * `pwd`
-
- \center \huge Python
-
- # Petit détour: version d'un programme
-
- * Comme les versions d'un document
- * Si le nombre est plus grand, c'est plus récent
- * Souvent en plusieurs morceaux: `1.3, 1.4, 3.2.5`. etc
- * Plus l'écart est grand, plus le programme a changé.
- * `3.2.5 -> 3.2.6`: pas grand-chose
- * `1.5.1 -> 4.3`: beaucoup de changements
- * On omet souvent le reste des numéros quand c'est pas nécessaire
-
- # Historique
-
- * Créé par Guido van Rossum. Conçu à la base pour l'enseignement.
- * Le nom vient des Monty Python (si, si)
- * Python 1: Sortie en 1991
- * Python 2: en 2000
- * Python 3: en 2008
-
- # Le grand schisme
-
- La plupart des langages continuent à être compatibles d'une version à l'autre.
-
- *Ce n'est pas le cas pour Python3*, et ça a causé beaucoup de confusion et de débats.
-
- Heureusement, 10 ans plus tard, la situation s'est arrangée, et Python2 cessera d'être maintenu le premier janvier 2020.
-
-
- # Python3
-
- Ce cours fonctionne donc uniquement avec Python3.
-
- N'utilisez *pas* Python2, sinon certaines choses expliquées ici ne marcheront pas :/
-
-
- # Utilisation de Python
-
- * Aussi appelé "langage de script", `glue language`
-
- * Bon partout, excellent nulle part
-
- * Exemples d'utilisation:
-
- * Sciences (physique, chimie, linguistique ...)
- * Animation (Pixar, Disney ...)
- * Sites web (journaux, youtube, ...)
- * Ligne de commande
- * ...
-
-
- # Installation
-
-
- # L'interpréteur interactif
-
-
-
- ```
- Python 3.7.1 (default, Oct 22 2018, 10:41:28)
- [GCC 8.2.1 20180831] on linux
- Type "help", "credits" or "license" for more information.
- ```
-
-
- # Note
-
-
- À partir de maintenant, recopiez les entrées sur les slides dans votre propre
- interpréteur.
-
- Vous devez taper la même chose après l'invite de commande ('>>>') et vous devez voir les mêmes réponses.
-
- Si ce n'est pas le cas, prévenez moi!
-
- # Entiers et maths simples
-
- ```
- >>> 1
- 1
- >>> 2
- 2
- >>> 1 + 2
- 3
- >>> 2 * 3
- 6
- ```
-
-
- # Flottants
-
- C'est le `.` qui fait le flottant
-
- ```
- >>> 0.5
- 0.5
- >>> 0.5 + 0.2
- 0.7
- >>> 10 / 3
- 3.3333333333333335
- ```
-
- *Note: les flottants sont imprécis*
-
-
-
- # Division entières et modulo
-
- ```
- >>> 14 // 3
- 4
- >>> 14 % 3
- 2
- ```
-
- *Le `%` n'a rien à voir avec un pourcentage!*
-
-
- # Priorité des opérations
-
-
- ```
- >>> 1 + 2 * 3
- 7
- >>> (1 + 2) * 3
- 9
- ```
-
- *Les parenthèses permettent de grouper les expressions*
-
-
- # Variables
-
- ```
- >>> a = 2
- >>> a
- 2
- >>> b = 3
- >>> a + b
- 5
- ```
-
- * On peut nommer des valeurs
- * On peut afficher la valeur d'une variable entrant son nom dans le REPL
-
-
- # Variables (2)
-
-
- ```
- >>> a = 2
- >>> a
- 2
- >>> a = 3
- >>> a
- 3
- ```
-
- * On peut changer la valeur d'une variable (d'où son nom)
-
-
- # Nom des variables
-
- Préférez des noms longs et descriptifs
-
- Toujours en minuscules
-
- Séparez les "mots" par des tirets bas (underscore)
-
- ```
- >>> score = 42
- >>> age_moyen = 22
- ```
-
-
- # Les chaînes de caractères
-
- Aussi appelées "string".
-
-
- Avec des simple quotes (`'`)
-
- ```
- >>> 'Bonjour monde!'
- 'Bonjour monde'
- ```
-
- Marche aussi avec des double quotes (`"`)
-
- ```
- >>> "Bonjour, monde!"
- 'Bonjour monde'
- ```
-
-
-
-
- # Double et simple quotes
-
- On peut mettre des simples quotes dans des double quotes et vice-versa.
-
- ```
- >>> "Il a dit: 'bonjour' ce matin."
- "Il a dit: 'bonjour' ce matin."
-
- >>> 'Il a dit: "bonjour" ce matin'
- 'Il a dit: "bonjour" ce matin!'
- ```
-
-
- # Échappement
-
-
- Avec la barre oblique inversée "backslash"
-
-
- ```
- >>> 'Il a dit: "bonjour". C\'est sympa!'
- 'Il a dit: "bonjour". C\'est sympa!'
- ```
-
-
- # Concaténation
-
-
- ```
- >>> name = "John"
- >>> message = "Bonjour " + name + " !"
- >>> message
- "Bonjour John !"
- ```
-
-
- # Types
-
- ```
- >>> a = 42
- >>> message = "La réponse est: " + a
- TypeError: can only concatenate str (not "int") to str
- ```
-
- *Notre premier message d'erreur !*
-
- On ne mélange pas les torchons et les serviettes!
-
-
-
- # Conversions
-
-
- # Entier vers string
-
- ```
- >>> a = 42
- >>> message = "La réponse est: " + str(a)
- >>> message
- 'La réponse est 42'
- ```
-
-
- # String vers entier
- ```
- >>> answer = int("42")
- >>> answer
- 42
- ```
-
- Notez les parenthèses autour des valeurs.
-
-
- # Booléens
-
- True et False
-
-
- En Python, elle sont en majuscules!
-
-
- # Assignation
-
- On peut assigner des variables aux valeurs True et False
-
-
- ```
- >>> la_terre_est_plate = False
- ...
- >>> python_c_est_genial = True
- ```
-
-
- # Comparaisons
-
- ```
- >>> a = 2
- >>> b = 3
- >>> a > b
- False
- ```
-
- ```
- >>> 2 + 2 == 4
- True
- ```
-
- Note: `==` pour la comparaison, `=` pour l'assignation
-
-
- # Comparaisons (2)
-
- ```
- >>> a = 2
- >>> b = 3
- >>> a != b
- True
- >>> 2 + 2 >= 4
- True
- ```
-
-
- # Comparaisons (3)
-
- ```
- >>> a = 2
- >>> a < 2
- False
- >>> 1 < a < 3
- True
- ```
-
- # Non persistance
-
- ```
- >>> a = 2
- >>> quit()
- ```
-
- ```
- >>> a
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- NameError: name 'a' is not defined
- ```
-
-
-
- # Du code dans un fichier
-
- Aussi appelé: "code source", ou "source".
-
- L'essence du logiciel libre :)
-
-
-
- # Installation d'un éditeur de texte simple
-
- * Linux; `gedit`, `kate`, ...
- * macOS: `CotEditor`
- * Windows: `Notepad++`
-
- J'insiste sur **simple**. Inutile d'installer un IDE pour le moment.
-
-
- # Configuration
-
- * Police de caractères à chasse fixe
- * Indentation de *4 espaces*
- * Remplacer tabulation par des espaces
- * Activer la coloration syntaxique
-
-
-
- # Notre premier fichier source
-
-
- Insérez le code suivant dans votre éditeur de texte
-
- ```python
- # Affiche un message
- print("Bonjour, monde")
- ```
-
-
- Sauvegardez dans un fichier `bonjour.py` dans `Documents/e2l/python` par exemple
-
- # Démonstration avec `kate`
-
- C'est l'éditeur que nous utiliserons pour nos ateliers.
-
- * Pour l'environement KDE, mais ça marche bien sous Gnome aussi
- * Coloration syntaxique
- * Auto-complétion
-
-
-
- # Lancer du code en ligne de commande
-
-
- ```
- $ cd Documents/e2l/python/
- $ python3 bonjour.py
- Bonjour, monde
- ```
-
- * Les lignes commençant par dièse (`#`) ont été ignorées - ce sont des *commentaires*.
- * `print()` affiche la valeur, comme dans le REPL.
-
-
- # Note importante (1)
-
- Vous avez juste besoin:
-
- * d'un éditeur de texte
- * de Python3 installé
- * d'une ligne de commande
-
- Pas la peine d'installer quoique ce soit de plus pour le moment
-
-
- # Note importante (2)
-
- À partir de maintenant, s'il y a marqué `# à recopier` en haut d'un exemple
-
-
- 1. *Recopiez* le code affiché dans votre éditeur, à la suite du code
- déjà écrit
- 2. Lancez le code depuis la ligne de commande
- 3. Réparez les erreurs éventuelles
- 4. Recommencez
-
-
- # Note importante (3)
-
- C'est le meilleur moyen d'apprendre. Si vous restez passifs vous retiendrez beaucoup moins de choses et ne pourrez pas coder par vous-même.
-
- Profitez qu'on soit là pour vous aider si vous avez des erreurs que vous ne comprenez pas!
-
-
- # Flot de contrôle
-
- L'essence de la programmation!
-
-
- # while
-
- Répéter tant qu'une condition est vraie
-
- ```python
- print("Bonjour, monde")
- while True:
- print("spam!")
- ```
-
- Notes:
-
- * deux points à la fin de la ligne
- * indentation après les deux points
-
- # Notre première boucle infinie
-
-
- ```
- $ python bonjour.py
- Bonjour, monde
- spam!
- spam!
- spam!
- ....
- ```
-
- CTRL-C pour interrompre
-
-
- # Conditions
-
- ```python
- a = 3
- b = 4
- if a == b:
- print("a et b sont égaux")
- else:
- print("a et be sont différents")
- ```
-
- Rappel:
-
- * deux points à la fin de la ligne
- * indentation après les deux points
-
-
- # Combiner while et if
-
- Interrompt la boucle quand une condition devient vraie:
-
-
- ```python
- i = 0
- while True:
- i = i + 1
- if i > 3:
- print("i est plus grand que 3, on arrête")
- break
- print("i =" + str(i))
- print("i est plus petit que 3, on continue")
- ```
-
-
- ```
- i = 1
- i est plus petit que 3, on continue
- i = 2
- i est plus petit que 3, on continue
- i = 3
- i est plus petit que 3, on continue
- i est plus grand que 3, on arrête
- ```
-
-
- # Lire une entrée utilisateur
-
- * `input()` (encore des parenthèses ...)
-
- * interrompt le script
- * lit ce que l'utilisateur tape jusqu'à ce qu'il tape "entrée".
- * renvoie une string
-
-
- # Le jeu
-
- On fait deviner un nombre à l'utilisateur, en affichant 'trop grand', 'trop petit'
- jusqu'à ce qu'il trouve la valeur exacte.
|