Browse Source

Saison 2, chapitre 1

master
Dimitri Merejkowsky 5 years ago
parent
commit
36717c76eb
3 changed files with 566 additions and 0 deletions
  1. +1
    -0
      saison 2/sessions/.gitignore
  2. +4
    -0
      saison 2/sessions/Makefile
  3. +561
    -0
      saison 2/sessions/python-01.md

+ 1
- 0
saison 2/sessions/.gitignore View File

@@ -0,0 +1 @@
*.pdf

+ 4
- 0
saison 2/sessions/Makefile View File

@@ -0,0 +1,4 @@
all: python-01.pdf

%.pdf: %.md
pandoc --pdf-engine=xelatex -t beamer $< -o $@

+ 561
- 0
saison 2/sessions/python-01.md View File

@@ -0,0 +1,561 @@
% 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.