Académique Documents
Professionnel Documents
Culture Documents
Cours_1 page 1 / 94
Ressources
• logiciel
o tout le système Python est librement téléchargeable sur www.python.org
o Attention, nous utilisons la version 3 de python :
python3.5 est installé en salle TP
chez vous, vous pouvez installer la dernière version : Python 3.8.
• installation
windows et macOS : www.python.org
linux : utilisez le gestionnaire de paquets de votre distribution (software center,
synaptic, ou sudo apt install python3 )
Cours_1 page 2 / 94
Algorithmique et programmation
• on a :
un problème général
dont une instance est définie par certaines données
dont la résolution procurera certains résultats
Cours_1 page 3 / 94
Algorithmique et programmation
• on a :
un problème général
dont une instance est définie par certaines données
dont la résolution procurera certains résultats
• exemple :
trouver les occurrences de "gaattc" dans "atgagtgaattcgtca … cccgttaa"
Cours_1 page 4 / 94
Algorithmique et programmation
• on a :
un problème général
dont une instance est définie par certaines données
dont la résolution procurera certains résultats
• exemple :
trouver les occurrences de "gaattc" dans "atgagtgaattcgtca … cccgttaa"
Cours_1 page 5 / 94
Schéma de principe d’un ordinateur
Processeur Processeur
Actif : calcul, décodage et quadruple
coeur
bus Mémoire centrale
exécution des instructions Core i5 Passive : conservation des données.
Rapide : ~ 4 GHz Core i5 Rapide. Grosse : ~ 16 Go
(4 × 109 cycles/sec) Core i5 (16 × 109 cellules élémentaires)
Core i5
16 Go
Cours_1 page 6 / 94
Principe de fonctionnement •
• le processeur exécute (automatiquement et très vite) les instructions
constituant un programme enregistré dans la mémoire
Cours_1 page 7 / 94
Principe de fonctionnement •
• le processeur exécute (automatiquement et très vite) les instructions
constituant un programme enregistré dans la mémoire
• les instructions représentent des opérations sur des données
Cours_1 page 8 / 94
Principe de fonctionnement •
• le processeur exécute (automatiquement et très vite) les instructions
constituant un programme enregistré dans la mémoire
• les instructions représentent des opérations sur des données
• certaines données sont enregistrées dans le programme,
d’autres sont obtenues durant l’exécution
soit comme résultats des opérations précédentes
soit acquises depuis l’extérieur (clavier, appareil de mesure, etc.)
Cours_1 page 9 / 94
Principe de fonctionnement •
• le processeur exécute (automatiquement et très vite) les instructions
constituant un programme enregistré dans la mémoire
• les instructions représentent des opérations sur des données
• certaines données sont enregistrées dans le programme,
d’autres sont obtenues durant l’exécution
soit comme résultats des opérations précédentes
soit acquises depuis l’extérieur (clavier, appareil de mesure, etc.)
Cours_1 page 10 / 94
Principe de fonctionnement •
• le processeur exécute (automatiquement et très vite) les instructions
constituant un programme enregistré dans la mémoire
• les instructions représentent des opérations sur des données
• certaines données sont enregistrées dans le programme,
d’autres sont obtenues durant l’exécution
soit comme résultats des opérations précédentes
soit acquises depuis l’extérieur (clavier, appareil de mesure, etc.)
Cours_1 page 11 / 94
Principe de fonctionnement
• le processeur exécute (automatiquement et très vite) les instructions
constituant un programme enregistré dans la mémoire
• les instructions représentent des opérations sur des données
• certaines données sont enregistrées dans le programme,
d’autres sont obtenues durant l’exécution
soit comme résultats des opérations précédentes
soit acquises depuis l’extérieur (clavier, appareil de mesure, etc.)
01001111001001110010101010111100101000110101010001010
un octet un octet un octet un octet un octet un octet un octet
Cours_1 page 12 / 94
Langage évolué, compilation, interprétation •
• un langage évolué permet de représenter
les nombres par leur notation usuelle
les instructions par des opérateurs et des mots-clés expressifs et faciles à lire
Cours_1 page 13 / 94
Langage évolué, compilation, interprétation •
• un langage évolué permet de représenter
les nombres par leur notation usuelle
les instructions par des opérateurs et des mots-clés expressifs et faciles à lire
Cours_1 page 14 / 94
Langage évolué, compilation, interprétation •
• un langage évolué permet de représenter
les nombres par leur notation usuelle
les instructions par des opérateurs et des mots-clés expressifs et faciles à lire
Cours_1 page 15 / 94
Langage évolué, compilation, interprétation
• un langage évolué permet de représenter
les nombres par leur notation usuelle
les instructions par des opérateurs et des mots-clés expressifs et faciles à lire
• compilation :
Cours_1 page 16 / 94
Analyse−programmation •
• le travail de l’analyste-programmeur devant un problème donné :
trouver l’algorithme de résolution
l’écrire dans un langage de programmation
Cours_1 page 17 / 94
Analyse−programmation •
• le travail de l’analyste-programmeur devant un problème donné :
trouver l’algorithme de résolution
l’écrire dans un langage de programmation
Cours_1 page 18 / 94
Analyse−programmation •
• le travail de l’analyste-programmeur devant un problème donné :
trouver l’algorithme de résolution
l’écrire dans un langage de programmation
Cours_1 page 19 / 94
Analyse−programmation
• le travail de l’analyste-programmeur devant un problème donné :
trouver l’algorithme de résolution
l’écrire dans un langage de programmation
• processus de développement :
Analyse Codage Test fin
Découverte d’erreurs
ou d’améliorations
Cours_1 page 20 / 94
Un programme de qualité est un programme… •
• correct
qualité indispensable (et pourtant…) : quand les données sont valides
le programme doit donner un résultat « correct »
difficile à établir : problème de l’exhaustivité des tests
Cours_1 page 21 / 94
Un programme de qualité est un programme… •
• correct
qualité indispensable (et pourtant…) : quand les données sont valides
le programme doit donner un résultat « correct »
difficile à établir : problème de l’exhaustivité des tests
• robuste
même quand les données sont invalides le programme fournit quelque chose
requiert beaucoup de soin de la part du programmeur
Cours_1 page 22 / 94
Un programme de qualité est un programme… •
• correct
qualité indispensable (et pourtant…) : quand les données sont valides
le programme doit donner un résultat « correct »
difficile à établir : problème de l’exhaustivité des tests
• robuste
même quand les données sont invalides le programme fournit quelque chose
requiert beaucoup de soin de la part du programmeur
• documenté
documentation externe (le manuel) et interne (commentaires dans le programme)
important pour le « client » et pour le programmeur
Cours_1 page 23 / 94
Un programme de qualité est un programme…
• correct
qualité indispensable (et pourtant…) : quand les données sont valides
le programme doit donner un résultat « correct »
difficile à établir : problème de l’exhaustivité des tests
• robuste
même quand les données sont invalides le programme fournit quelque chose
requiert beaucoup de soin de la part du programmeur
• documenté
documentation externe (le manuel) et interne (commentaires dans le programme)
important pour le « client » et pour le programmeur
• efficace
les qualités précédentes étant acquises, le meilleur programme est
celui qui optimise les ressources (temps, mémoire, etc.), surtout le temps
Cours_1 page 24 / 94
Le langage Python •
• créé par Guido van Rossum (Pays-Bas, 1991). Trois éléments :
définition du langage : vocabulaire, syntaxe, types de données
machine Python (ou interpréteur)
bibliothèque, devenue depuis très copieuse
Cours_1 page 25 / 94
Le langage Python •
• créé par Guido van Rossum (Pays-Bas, 1991). Trois éléments :
définition du langage : vocabulaire, syntaxe, types de données
machine Python (ou interpréteur)
bibliothèque, devenue depuis très copieuse
Cours_1 page 26 / 94
Le langage Python •
• créé par Guido van Rossum (Pays-Bas, 1991). Trois éléments :
définition du langage : vocabulaire, syntaxe, types de données
machine Python (ou interpréteur)
bibliothèque, devenue depuis très copieuse
Cours_1 page 27 / 94
Le langage Python
• créé par Guido van Rossum (Pays-Bas, 1991). Trois éléments :
définition du langage : vocabulaire, syntaxe, types de données
machine Python (ou interpréteur)
bibliothèque, devenue depuis très copieuse
• en résumé : langage
à l’approche très facile
idéal pour écrire des scripts liant d’autres programmes
où on peut envisager de créer des programmes complexes
très répandu en bioinformatique
équivalent (en fonctionnalités et cas d'utilisation) à Perl ou Ruby
Cours_1 page 28 / 94
Le mode immédiat (ou interactif) •
• la boucle supérieure (top-level loop) :
read : la machine affiche une invite (>>>) et l’utilisateur tape
une expression correcte
eval : la machine obtient la valeur de cette expression
print : la machine affiche cette valeur
• exemple :
>>> 2**8 # 2 à la puissance 8
256
>>>
Cours_1 page 29 / 94
Le mode immédiat (ou interactif) •
• la boucle supérieure (top-level loop) :
read : la machine affiche une invite (>>>) et l’utilisateur tape
une expression correcte
eval : la machine obtient la valeur de cette expression
print : la machine affiche cette valeur
• exemple :
>>> 2**8 # 2 à la puissance 8
256
>>>
• exception : si la valeur est None (convention), rien n’est affichée
>>> None
>>>
>>> nbr = 8
>>>
Cours_1 page 30 / 94
Le mode immédiat (ou interactif) •
• la boucle supérieure (top-level loop) :
read : la machine affiche une invite (>>>) et l’utilisateur tape
une expression correcte
eval : la machine obtient la valeur de cette expression
print : la machine affiche cette valeur
• exemple :
>>> 2**8 # 2 à la puissance 8
256
>>>
• exception : si la valeur est None (convention), rien n’est affichée
>>> None
>>>
>>> nbr = 8
>>>
• mode immédiat : bon moyen d’approcher le langage et tester ses idées
Cours_1 page 31 / 94
Le mode immédiat (ou interactif)
• la boucle supérieure (top-level loop) :
read : la machine affiche une invite (>>>) et l’utilisateur tape
une expression correcte
eval : la machine obtient la valeur de cette expression
print : la machine affiche cette valeur
• exemple :
>>> 2**8 # 2 à la puissance 8
256
>>>
• exception : si la valeur est None (convention), rien n’est affichée
>>> nbr = 8
>>>
• mode immédiat : bon moyen d’approcher le langage et tester ses idées
entre # et la fin de la ligne :
commentaire ignoré par python
Cours_1 page 32 / 94
Le mode immédiat (ou interactif) •
• Python interprété : utilisation en « mode calculette ». Exemple :
Cours_1 page 33 / 94
Le mode immédiat (ou interactif) •
• Python interprété : utilisation en « mode calculette ». Exemple :
Cours_1 page 34 / 94
Le mode immédiat (ou interactif) •
• Python interprété : utilisation en « mode calculette ». Exemple :
Cours_1 page 35 / 94
Le mode immédiat (ou interactif) •
• Python interprété : utilisation en « mode calculette ». Exemple :
Cours_1 page 36 / 94
Le mode immédiat (ou interactif) •
• Python interprété : utilisation en « mode calculette ». Exemple :
Cours_1 page 37 / 94
Le mode immédiat (ou interactif) •
• Python interprété : utilisation en « mode calculette ». Exemple :
Cours_1 page 38 / 94
Le mode immédiat (ou interactif)
• Python interprété : utilisation en « mode calculette ». Exemple :
Cours_1 page 39 / 94
Données, opérateurs, expressions •
• données : données initiales, résultats, valeurs intermédiaires
• types primitifs :
entiers (sur 32 bits)
0 123 -50
Cours_1 page 40 / 94
Données, opérateurs, expressions •
• données : données initiales, résultats, valeurs intermédiaires
• types primitifs :
entiers (sur 32 bits)
0 123 -50
entiers longs
340282366920938463463374607431768211456 1L
Cours_1 page 41 / 94
Données, opérateurs, expressions •
• données : données initiales, résultats, valeurs intermédiaires
• types primitifs :
entiers (sur 32 bits)
0 123 -50
entiers longs
340282366920938463463374607431768211456 1L
nombres non entiers (on dit « flottants »)
1.5 -0.33333333333333331 0.166054018e-23
Cours_1 page 42 / 94
Données, opérateurs, expressions •
• données : données initiales, résultats, valeurs intermédiaires
• types primitifs :
entiers (sur 32 bits)
0 123 -50
entiers longs
340282366920938463463374607431768211456 1L
nombres non entiers (on dit « flottants »)
1.5 -0.33333333333333331 0.166054018e-23
chaînes de caractères
"J'aime Python"
Cours_1 page 43 / 94
Données, opérateurs, expressions
• données : données initiales, résultats, valeurs intermédiaires
• types primitifs :
entiers (sur 32 bits)
0 123 -50
entiers longs
340282366920938463463374607431768211456 1L
nombres non entiers (on dit « flottants »)
1.5 -0.33333333333333331 0.166054018e-23
chaînes de caractères
"J'aime Python"
quelques valeurs conventionnelles
Booléens : True (vrai), False (faux),
Absence de valeur : None
Cours_1 page 44 / 94
A propos des nombres •
• possibilité d’écrire un nombre en base 8 (octal) ou 16 (hexadécimal)
>>> 0o33 # 3 x 8 + 3 = 27
27
>>> 0x1B # 1 x 16 + 11 = 27
27
Cours_1 page 45 / 94
A propos des nombres •
• possibilité d’écrire un nombre en base 8 (octal) ou 16 (hexadécimal)
>>> 0o33 # 3 x 8 + 3 = 27
27
>>> 0x1B # 1 x 16 + 11 = 27
27
Cours_1 page 46 / 94
A propos des nombres
• possibilité d’écrire un nombre en base 8 (octal) ou 16 (hexadécimal)
>>> 0o33 # 3 x 8 + 3 = 27
27
>>> 0x1B # 1 x 16 + 11 = 27
27
Cours_1 page 47 / 94
Chaînes de caractères •
• plusieurs notations
>>> "Bonjour"
'Bonjour'
>>>
Cours_1 page 48 / 94
Chaînes de caractères •
• plusieurs notations
>>> "Bonjour"
'Bonjour'
>>> "Bonjour" == 'Bonjour'
True
>>>
Cours_1 page 49 / 94
Chaînes de caractères •
• plusieurs notations
>>> "Bonjour"
'Bonjour'
>>> "Bonjour" == 'Bonjour'
True
>>> 'Il a dit "bonjour"'
'Il a dit "bonjour"'
>>>
Cours_1 page 50 / 94
Chaînes de caractères •
• plusieurs notations
>>> "Bonjour"
'Bonjour'
>>> "Bonjour" == 'Bonjour'
True
>>> 'Il a dit "bonjour"'
'Il a dit "bonjour"'
>>> 'J\'ai dit "bonjour"'
'J\'ai dit "bonjour"'
>>>
Cours_1 page 51 / 94
Chaînes de caractères •
• plusieurs notations
>>> "Bonjour"
'Bonjour'
>>> "Bonjour" == 'Bonjour'
True
>>> 'Il a dit "bonjour"'
'Il a dit "bonjour"'
>>> 'J\'ai dit "bonjour"'
'J\'ai dit "bonjour"'
>>> print('J\'ai dit "bonjour"')
J'ai dit "bonjour"
>>>
Cours_1 page 52 / 94
Chaînes de caractères •
• plusieurs notations
>>> "Bonjour"
'Bonjour'
>>> "Bonjour" == 'Bonjour'
True
>>> 'Il a dit "bonjour"'
'Il a dit "bonjour"'
>>> 'J\'ai dit "bonjour"'
'J\'ai dit "bonjour"'
>>> print('J\'ai dit "bonjour"')
J'ai dit "bonjour"
>>> """Ceci est une
longue chaine"""
'Ceci est une\nlongue chaine'
>>>
Cours_1 page 53 / 94
Chaînes de caractères
• plusieurs notations
>>> "Bonjour"
'Bonjour'
>>> "Bonjour" == 'Bonjour'
True
>>> 'Il a dit "bonjour"'
'Il a dit "bonjour"'
>>> 'J\'ai dit "bonjour"'
'J\'ai dit "bonjour"'
>>> print('J\'ai dit "bonjour"')
J'ai dit "bonjour"
>>> """Ceci est une
longue chaine"""
'Ceci est une\nlongue chaine'
>>> print("""Ceci est une
longue chaine""")
Ceci est une
longue chaine
>>>
Cours_1 page 54 / 94
Des opérations avec des chaînes •
• concaténation
>>> "Bonjour" + " a tous"
'Bonjour a tous'
>>>
Cours_1 page 55 / 94
Des opérations avec des chaînes •
• concaténation
>>> "Bonjour" + " a tous"
'Bonjour a tous'
>>> "Bonsoir" * 3
'BonsoirBonsoirBonsoir'
>>>
Cours_1 page 56 / 94
Des opérations avec des chaînes •
• concaténation
>>> "Bonjour" + " a tous"
'Bonjour a tous'
>>> "Bonsoir" * 3
'BonsoirBonsoirBonsoir'
>>>
Cours_1 page 57 / 94
Des opérations avec des chaînes •
• concaténation
>>> "Bonjour" + " a tous"
'Bonjour a tous'
>>> "Bonsoir" * 3
'BonsoirBonsoirBonsoir'
>>>
Cours_1 page 58 / 94
Des opérations avec des chaînes •
• concaténation
>>> "Bonjour" + " a tous"
'Bonjour a tous'
>>> "Bonsoir" * 3
'BonsoirBonsoirBonsoir'
>>>
Cours_1 page 59 / 94
Des opérations avec des chaînes •
• concaténation
>>> "Bonjour" + " a tous"
'Bonjour a tous'
>>> "Bonsoir" * 3
'BonsoirBonsoirBonsoir'
>>>
Cours_1 page 60 / 94
Des opérations avec des chaînes •
• concaténation • extraction de sous-chaîne
>>> "Bonjour" + " a tous" >>> "Bonjour"[2:5]
'Bonjour a tous' 'njo'
>>> "Bonsoir" * 3 >>>
'BonsoirBonsoirBonsoir'
>>>
Cours_1 page 61 / 94
Des opérations avec des chaînes •
• concaténation • extraction de sous-chaîne
>>> "Bonjour" + " a tous" >>> "Bonjour"[2:5]
'Bonjour a tous' 'njo'
>>> "Bonsoir" * 3 >>> "Bonjour"[2:]
'BonsoirBonsoirBonsoir' 'njour'
>>> >>>
Cours_1 page 62 / 94
Des opérations avec des chaînes •
• concaténation • extraction de sous-chaîne
>>> "Bonjour" + " a tous" >>> "Bonjour"[2:5]
'Bonjour a tous' 'njo'
>>> "Bonsoir" * 3 >>> "Bonjour"[2:]
'BonsoirBonsoirBonsoir' 'njour'
>>> >>> "Bonjour"[:5]
'Bonjo'
• accès aux caractères >>>
>>> "Bonjour"[3]
'j'
>>> "Bonjour"[0]
'B'
>>> "Bonjour"[6]
'r'
>>> "Bonjour"[-1]
'r'
>>>
Cours_1 page 63 / 94
Des opérations avec des chaînes •
• concaténation • extraction de sous-chaîne
>>> "Bonjour" + " a tous" >>> "Bonjour"[2:5]
'Bonjour a tous' 'njo'
>>> "Bonsoir" * 3 >>> "Bonjour"[2:]
'BonsoirBonsoirBonsoir' 'njour'
>>> >>> "Bonjour"[:5]
'Bonjo'
• accès aux caractères >>> "Bonjour"[:]
'Bonjour'
>>> "Bonjour"[3] >>>
'j'
>>> "Bonjour"[0]
'B'
>>> "Bonjour"[6]
'r'
>>> "Bonjour"[-1]
'r'
>>>
Cours_1 page 64 / 94
Des opérations avec des chaînes •
• concaténation • extraction de sous-chaîne
>>> "Bonjour" + " a tous" >>> "Bonjour"[2:5]
'Bonjour a tous' 'njo'
>>> "Bonsoir" * 3 >>> "Bonjour"[2:]
'BonsoirBonsoirBonsoir' 'njour'
>>> >>> "Bonjour"[:5]
'Bonjo'
• accès aux caractères >>> "Bonjour"[:]
'Bonjour'
>>> "Bonjour"[3] >>> "Bonjour"[3:3]
'j' ''
>>> "Bonjour"[0] >>>
'B'
>>> "Bonjour"[6]
'r'
>>> "Bonjour"[-1]
'r'
>>>
Cours_1 page 65 / 94
Des opérations avec des chaînes •
• concaténation • extraction de sous-chaîne
>>> "Bonjour" + " a tous" >>> "Bonjour"[2:5]
'Bonjour a tous' 'njo'
>>> "Bonsoir" * 3 >>> "Bonjour"[2:]
'BonsoirBonsoirBonsoir' 'njour'
>>> >>> "Bonjour"[:5]
'Bonjo'
• accès aux caractères >>> "Bonjour"[:]
'Bonjour'
>>> "Bonjour"[3] >>> "Bonjour"[3:3]
'j' ''
>>> "Bonjour"[0] >>> "Bonjour"[3:4]
'B' 'j'
>>> "Bonjour"[6]
'r'
>>> "Bonjour"[-1]
'r'
>>>
Cours_1 page 66 / 94
Des opérations avec des chaînes
• concaténation • extraction de sous-chaîne
>>> "Bonjour" + " a tous" >>> "Bonjour"[2:5]
'Bonjour a tous' 'njo'
>>> "Bonsoir" * 3 >>> "Bonjour"[2:]
'BonsoirBonsoirBonsoir' 'njour'
>>> >>> "Bonjour"[:5]
'Bonjo'
• accès aux caractères >>> "Bonjour"[:]
'Bonjour'
>>> "Bonjour"[3] >>> "Bonjour"[3:3]
'j' ''
>>> "Bonjour"[0] >>> "Bonjour"[3:4]
'B' 'j'
>>> "Bonjour"[6]
'r' "Bonjour"[2:5]
>>> "Bonjour"[-1]
'r'
>>> 0 1 2 3 4 5 6 7 8
'njo'
Cours_1 page 67 / 94
Variables
• variable : liaison d’un nom à une donnée (pendant un certain temps)
une donnée
une(des) cellule(s) mémoire où elle est conservée
un nom
90.0
vitesse
Cours_1 page 68 / 94
Variables •
• variable : liaison d’un nom à une donnée (pendant un certain temps)
une donnée
une(des) cellule(s) mémoire où elle est conservée
un nom
90.0
vitesse
Cours_1 page 69 / 94
Variables
• variable : liaison d’un nom à une donnée (pendant un certain temps)
une donnée
une(des) cellule(s) mémoire où elle est conservée
un nom
90.0
vitesse
Cours_1 page 70 / 94
Les variables évoluent •
>>> vitesse
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'vitesse' is not defined
>>>
Cours_1 page 71 / 94
Les variables évoluent •
>>> vitesse
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'vitesse' is not defined
>>> vitesse = 120
>>> la première affectation
définit la variable
Cours_1 page 72 / 94
Les variables évoluent •
>>> vitesse
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'vitesse' is not defined
>>> vitesse = 120
>>> vitesse
120
>>>
Cours_1 page 73 / 94
Les variables évoluent •
>>> vitesse
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'vitesse' is not defined
>>> vitesse = 120
>>> vitesse
120
>>> vitesse = 90
>>> vitesse
90
>>>
Cours_1 page 74 / 94
Les variables évoluent •
>>> vitesse
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'vitesse' is not defined
>>> vitesse = 120
>>> vitesse
120
>>> vitesse = 90 quel est le type de cette variable ?
>>> vitesse
90
>>> type(vitesse)
<type 'int'>
>>> vitesse = 90.0
>>> type(vitesse)
<type 'float'>
>>>
Cours_1 page 75 / 94
Les variables évoluent
>>> vitesse
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'vitesse' is not defined
>>> vitesse = 120
>>> vitesse
120
>>> vitesse = 90
>>> vitesse
90
>>> type(vitesse)
<type 'int'>
>>> vitesse = 90.0
>>> type(vitesse)
<type 'float'>
>>> vitesse = "a l'arret"
>>> vitesse
"a l'arret"
>>>
Cours_1 page 76 / 94
Affecter n’est pas comparer •
• affectation : a un effet, n’a pas de valeur
>>> a = b
>>>
− produit un changement (de la valeur de a)
− ne renvoie pas de valeur
Cours_1 page 77 / 94
Affecter n’est pas comparer
• affectation : a un effet, n’a pas de valeur
>>> a = b
>>>
− produit un changement (de la valeur de a)
− ne renvoie pas de valeur
Cours_1 page 78 / 94
Affectations multiples •
• affecter plusieurs variables par la même valeur
>>> a = b = c = 0
>>>
Cours_1 page 79 / 94
Affectations multiples •
• affecter plusieurs variables par la même valeur
>>> a = b = c = 0
>>>
Cours_1 page 80 / 94
Affectations multiples
• affecter plusieurs variables par la même valeur
>>> a = b = c = 0
>>>
• plus fort :
>>> a, b = b, a + b
>>>
Cours_1 page 81 / 94
Opérateurs et expressions
• expression
assemblage de constantes, variables et opérateurs
soumis à une syntaxe précise
qui renvoie une valeur
volume = surfaceBase * hauteur / 3
expression
Cours_1 page 82 / 94
Opérateurs •
• arithmétiques : + − * ** / %
>>> 2 ** 3 # puissance
8
>>> 17 % 5 # modulo (reste de la division entière)
2
>>>
Cours_1 page 83 / 94
Opérateurs •
• arithmétiques : + − * ** / %
>>> 2 ** 3 # puissance
8
>>> 17 % 5 # modulo (reste du quotient)
2
>>>
• comparaison : == != < <= > >=
>>> 2 ** 3 == 8
True
>>>
Cours_1 page 84 / 94
Opérateurs •
• arithmétiques : + − * ** / %
>>> 2 ** 3 # puissance
8
>>> 17 % 5 # modulo (reste du quotient)
2
>>>
• comparaison : == != < <= > >=
>>> 2 ** 3 == 8
True
>>>
• logiques : and or not
>>> x = 14
>>> x >= 10 and x <= 20
True
>>>
Cours_1 page 85 / 94
Opérateurs
• arithmétiques : + − * ** / %
>>> 2 ** 3 # puissance
8
>>> 17 % 5 # modulo (reste du quotient)
2
>>>
• comparaison : == != < <= > >=
>>> 2 ** 3 == 8
True
>>>
• logiques : and or not
>>> x = 14
>>> x >= 10 and x <= 20
True
>>>
• quelques bizarreries : + (entre chaînes), % (avec une chaîne), etc.
Cours_1 page 86 / 94
Opérateurs : priorité, associativité, parenthèses
• ambiguïté de la notation infixée : que signifie
10 + 2 * 3
(10 + 2) * 3 10 + 2 * 3
Cours_1 page 87 / 94
Opérateurs : priorité, associativité, parenthèses
• et entre opérateurs de même priorité ?
100 - 10 - 1
Cours_1 page 88 / 94
Opérateurs Booléens •
• Nom tiré de l'algèbre de George Boole (~1850) :
>>> True
True
>>> not True
False
>>> True or False
True
>>> True and False
False
>>> 5 > 4
True
>>> 5 > 4 and 2 > 3
False
>>> (5 > 4 or 2 > 3) and (10 < 8 or 4 < 1)
False
Cours_1 page 89 / 94
Importer des modules de la bibliothèque •
>>> sqrt(4)
[...] sqrt appartient au module math
NameError: name 'sqrt' is not defined
>>>
Cours_1 page 90 / 94
Importer des modules de la bibliothèque •
>>> sqrt(4)
[...] sqrt appartient au module math
NameError: name 'sqrt' is not defined
>>> math.sqrt(4)
[...]
NameError: name 'math' is not defined
le module math n’est pas
>>> connu
Cours_1 page 91 / 94
Importer des modules de la bibliothèque •
>>> sqrt(4)
[...] sqrt appartient au module math
NameError: name 'sqrt' is not defined
>>> math.sqrt(4)
[...]
NameError: name 'math' is not defined
le module math n’est pas
>>> import math connu
>>> math.sqrt(4)
2.0
>>>
Cours_1 page 92 / 94
Importer des modules de la bibliothèque •
>>> sqrt(4)
[...] sqrt appartient au module math
NameError: name 'sqrt' is not defined
>>> math.sqrt(4)
[...]
NameError: name 'math' is not defined
le module math n’est pas
>>> import math connu
>>> math.sqrt(4)
2.0
>>> sqrt(4) importer ne dispense pas
[...]
NameError: name 'sqrt' is not defined de préfixer, sauf si…
>>>
Cours_1 page 93 / 94
Importer des modules de la bibliothèque
>>> sqrt(4)
[...] sqrt appartient au module math
NameError: name 'sqrt' is not defined
>>> math.sqrt(4)
[...]
NameError: name 'math' is not defined
le module math n’est pas
>>> import math connu
>>> math.sqrt(4)
2.0
>>> sqrt(4) importer ne dispense pas
[...]
NameError: name 'sqrt' is not defined de préfixer, sauf si…
>>> from math import sqrt
>>> sqrt(4)
2.0
>>>
Cours_1 page 94 / 94