Introduction à Python
Interpréteur et compilateur¶
Différence entre interpréteur et compilateur :
Un interprèteur traduit directement un programme (on parle souvent de scripts
dans ce cas) ligne par ligne en langage machine. Ce qui permet d'afficher rapidement des erreurs claires lorsque le programme n'est pas "écrit correctement".
Un compilateur "lit" tout le programme, optimise le code (notamment pour que le programme s'exécute plus rapidement) et le convertit en langage machine. Cela permet d'optimiser votre code pour qu'il soit bien adapté à votre machine.
La théorie des compilateurs et des interpréteurs dépassent largement le cadre de ce cours, pour les plus curieux / curieuses, voir notamment : https://fr.wikipedia.org/wiki/Automate_fini, https://fr.wikipedia.org/wiki/Grammaire_formelle.
On entend assez souvent que Python est un langage interprété, mais cela n'est pas rigoureux car un langage est quelque chose d'abstrait largement indépendant de la manière dont on le compile ou l'interprète.
D'autre part, votre code Python est d'abord compilé en un code intermédiaire appelé bytecode
avant d'être utilisé par l'interpréteur.
Interprété vs compilé
Quel peut être d'après vous l'avantage et l'inconvénient des interpréteurs ? Même question pour les compilateurs.
D'autres langages
Pouvez vous citer des exemples de langages qui sont associés à l'utilisation de compilateurs ? Même question pour les langages associés à des intérpréteurs.
1. Tabulations et commentaires¶
Tabulations¶
En Python
les tabulations font partie du langage, lorsque l'on utilise des espaces pour structurer son code, on dit qu'on indente
son code.
Ainsi en Python
ce code :
Va générer une erreur :
Car on a indenté son code sans raison.
Commentaires et nommage¶
Un développeur ou développeuse passe largement plus de temps à lire du code qu'il ou elle n'a pas écrit qu'à en écrire il ou elle même. Il est donc fortement recommandé d’insérer des commentaires à l’intérieur d’un programme lorsqu'il n'est pas évident de comprendre tout de suite ce que fait une partie du programme. Les commentaires feront partie intégrante de l’évaluation.
En Python on commente du code en utilisant le symbole #
.
Il existe également une manière de documenter son code et qui utilise ce qu'on appelle des docstring
formées de trois doubles quotes """
, mais nous n'en parlerons pas dans un premier temps.
Bien nommer ses variables et fonctions est extrêmement important. Ecrire du code clair passe par un nommage suffisamment explicite (sans être verbeux).
Note
Qui a écrit cette phrase ?
"Ce que l'on conçoit bien s’énonce clairement, Et les mots pour le dire arrivent aisément"
Vous avez dit c'est hors sujet ? Passons alors à l'arithmétique, encore de l'arithmétique oui oui.
2. Les opérations arithmétiques¶
Les opérateurs arithmétiques en Python :
- L'addition
+
- La soustraction
-
- La multiplication
*
- La division
/
- La division entière
//
- Le reste de la division euclidienne
%
- L'exponentiation
**
3. Variables et type¶
3.1 Stocker une valeur dans une variable¶
Écrire l'instruction :
On vient de stocker la valeur 1
dans une variable qui s'appelle age
.
Ce nom de variable permet de récupérer facilement cette information dans la mémoire de l'ordinateur sans avoir à se soucier de l'adresse en mémoire.
Nous verrons plus tard comment fonctionne cette mémoire.
Le signe =
correspond à une affectation, il ne faut pas le confondre avec le symbole égal
en mathématique.
On dit aussi que l'on vient d'assigner la valeur 1
à la variable age
.
Pour exemple, l’instruction x = 5 a un sens en programmation, alors que l’instruction 5 = x n’en a aucun. En mathématiques, ces deux écritures sont totalement équivalentes
3.2 Types¶
En Python on peut utiliser des types de valeurs différents, des valeurs numériques (entiers, flottants, binaires, ...), des chaînes de caractères. Nous n'avons pas à spécifier le type de la variable, mais cela ne veut pas dire qu'il n'y a pas de type.
Les types de variables les plus courants sont :
- int pour les nombres entiers (codés en complément à 2)
- float pour les décimaux (IEEE 754)
- str pour les chaînes de caractère
- bool pour les booléens (True et False)
Il existe d'autres types que nous étudierons en partie par la suite (notamment les tuples, listes et dictionnaires).
Par exemple on peut afficher le type de la variable age
:
Affiche
Le mot cléclass
nous indique que l'on a affaire à un objet. Ces notions seront étudiées en Terminale.
3.2.1 Les entiers¶
Par défaut Python n'a qu'un type int
pour les entiers, même s'il est possible de gérer différents types d'entiers en utilisant des librairies comme numpy
par exemple.
La taille en mémoire vive de cet entier ne dépend pas de votre microprocesseur comme dans d'autres langages. En C
par exemple, étant donné qu'actuellement la plupart de vos microprocesseurs ont des registres (de la mémoire embarquée dans votre microprocesseur) de 64 bits, la taille d'un entier est limité par cette taille de registre.
En Python
En bref retenez qu'un seul type entier est nécessaire : le type int
.
3.2.2 Les flottants¶
Le type flottant est nécessaire lorsque l'on souhaite ajouter de la précision dans certains calculs.
Par exemple, supposons que je souhaite calculer l'aire d'un disque de 4cm de diamètre.
On utilise alors la constante \(\pi\) (un nombre réél irrationnel).
On constate alors que \(\pi\) est de type flottant.
Question
4. Entrées / sorties¶
On peut récupérer des valeurs entrées au clavier par un utilisateur à l'aide de la fonction input()
. Les données rentrées sont sous forme de chaînes de caractères. Si on souhaite obtenir un entier par exemple il faut donc bien penser à convertir la chaîne.
Pour afficher des chaînes de caractères on utilise la fonction print()
. On peut utiliser des virgules pour affficher plusieurs valeurs en même temps :
Vous pouvez également utiliser les f-strings
bien qu'elle ne soit pas utilisée dans les sujets du baccalauréat pour le moment, c'est la manière recommandée en général en Python
pour afficher plusieurs chaînes de caractères :
Comme vous le constatez cette méthode est plus propre.
Il existe d'autres manières de formater une chaîne de caractère, comme par exemple :
5. Structures conditionnelles¶
Question
L’instruction else (sinon) permet de programmer une éxecution alternative lorsque la condition suivante if n’est pas réalisée. L’instruction elif (contraction de else if) permet de définir des conditions alternatives.
La structure générale est la suivante :
if condition 1 :
blocs d’instructions
elif condition 2 :
blocs d’instructions
...
else:
blocs d’instructions
Question
Quel est censé être le but de ce code ? Modifiez ce code pour qu'il soit cohérent.
Remarque
On peut imbriquer des conditions, mais cela peut vite devenir illisible :
6. Boucles¶
Lorsque l'on ne connait pas le nombre d'itérations requis pour arrêter la boucle on utilisera une boucle non bornée. Lorsque l'on connait le nombre d'itérations alors on pourra privilégier les boucles bornées.
6.1 Boucles non bornées¶
Par moment on souhaite répéter une série d'instructions tant qu' une condition est satisfaite.
Par exemple, supposons qu'on attende que l'utilisateur appuie sur un bouton pour sortir de la boucle :
running = True
while running:
# Si l'utilisateur quitte le jeu
if event.type == QUIT:
running = False
# Sinon on continue le jeu
continuer_jeu()
Un exemple plus parlant peut être :
Il faut être vigilant sur la terminaison des boucles while, car il est possible que ces boucles ne se terminent jamais, ce qui empêchera le programme de se terminer.
On peut également utiliser les boucles while
pour les boucles bornées, même si on préféra généralement l'utilisation de boucles for
.
6.2 Boucles bornées¶
En Python
on peut utiliser des boucles for
lorsque l'on connaît le nombre d'itérations :
Limite boucles for
En Python l'itération ci-dessus va afficher les chiffres de 0 à 9.
Plus généralement, range(0, n) crée une liste de n nombres allant de 0 à n - 1.