|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600 |
- # Introduction à la programmation avec Python
-
-
-
- <p align="right">
- E2L <br />
- 24/11/2018 <br />
- Dimitri Merejkowsky <br />
- </p>
-
- ---
-
- # Plan
-
- * Présentation et historique du langage
- * L'interpréteur interactif
- * Un jeu simple
-
- ---
-
- # 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.
-
- ---
-
- # 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
-
-
-
- !pycon
- $ python3
- 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
-
- !pycon
- >>> 1
- 1
- >>> 2
- 2
- >>> 1 + 2
- 3
- >>> 2 * 3
- 6
-
- ---
-
- # Flottants
-
- C'est le `.` qui fait le flottant
-
- !pycon
- >>> 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
-
- !pycon
- >>> 14 // 3
- 4
- >>> 14 % 3
- 2
-
- *Le `%` n'a rien à voir avec un pourcentage!*
-
- ---
-
- # Priorité des opérations
-
-
- !pycon
- >>> 1 + 2 * 3
- 7
- >>> (1 + 2) * 3
- 9
-
- *Les parenthèses permettent de grouper les expressions*
-
- ---
-
- # Variables
-
- !pycon
- >>> 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)
-
-
- !pycon
- >>> 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 minuscule
-
- Séparez les "mots" par des tirets bas (underscore)
-
- !pycon
- >>> score = 42
- >>> medium_age = 22
-
- ---
-
- # Les chaînes de caractères
-
- Aussi appelées "string".
-
-
- Avec des simple quotes (`'`)
-
- !pycon
- >>> 'Bonjour monde!'
- 'Bonjour monde'
-
- Marche aussi avec des double quotes (`"`)
-
- !pycon
- >>> "Bonjour, monde!"
- 'Bonjour monde'
-
-
-
- ---
-
- # Double et simple quotes
-
- On peut mettre des simples quotes dans des double quotes et vice-versa.
-
- !pycon
- >>> "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"
-
-
- !pycon
- >>> 'Il a dit: "bonjour". C\'est sympa!'
- 'Il a dit: "bonjour". C\'est sympa!'
-
- ---
-
- # Concaténation
-
-
- !pycon
- >>> name = "John"
- >>> message = "Bonjour " + name + " !"
- >>> message
- "Bonjour John !"
-
- ---
-
- # Types
-
- !pycon
- >>> a = 42
- >>> message = "La réponse est: " + a
- TypeError: can only concatenate str (not "int") to str
-
- On ne mélange pas les torchons et les serviettes!
-
- ---
-
- # Conversions
-
-
- !python
- # 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
-
-
- !pycon
- >>> la_terre_est_plate = False
- ...
- >>> python_c_est_genial = True
-
- ---
-
- # Comparaisons
-
- !pycon
- >>> a = 2
- >>> b = 3
- >>> a > b
- False
-
- >>> 2 + 2 == 4
- True
-
- Note: `==` pour la comparaison, `=` pour l'assignation
-
- ---
-
- # Comparaisons (2)
-
- !pycon
- >>> a = 2
- >>> b = 3
- >>> a != b
- True
- >>> 2 + 2 >= 4
- True
-
- ---
- # Non persistance
-
- !pycon
- >>> a = 2
- >>> quit()
-
- <span />
-
- !pycon
- >>> a
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- NameError: name 'a' is not defined
-
- *Notre premier message d'erreur !*
-
-
- ---
-
- # 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
-
- ---
-
- # Lancer du code en ligne de commande
-
-
- !console
- $ cd Documents/e2l/python/
- $ python3 bonjour.py
- Bonjour, monde
-
- * Les lignes commençant par dièse (`#`) ont été ignorées
- * `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
-
-
- !bash
- $ 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")
-
-
- <pre>
- 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
- </pre>
- ---
-
- # 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.
-
- ---
-
- # Le code
-
-
- !python
- # À recopier dans devine-nombre.py
- secret = 42
-
- print("Devine le nombre auquel je pense")
-
- while True:
- response = input()
- response = int(response)
-
- if response == secret:
- print("Gagné")
- break
- else:
- if response > secret:
- print("Trop grand")
- if response < secret:
- print("Trop petit")
-
- ---
-
- # Éviter de hard-coder le secret
-
- Le secret a une valeur prédéfinie, et il faut changer le code source
- pour changer le secret, pas terrible.
-
-
- Solution: le choisir au hasard
-
- ---
-
- # Un secret au hasard
-
- Remplacez le première ligne pour avoir:
-
- !python
- # À recopier dans devine-nombre.py
- import random
-
- secret = random.randint(0, 100)
-
- Le jeu devient tout de suite plus amusant :)
-
- (Oui, c'est un peu magique pour le moment, mais on expliquera en
- détail comment ça marche plus tard).
-
-
- ---
-
- # Et voilà!
-
-
- $ python 02-devine-nombre.py
- Devine le nombre auquel je pense
- 50
- Trop grand
- 25
- Trop petit
- 27
- Trop grand
- 26
- Gagné
|