Académique Documents
Professionnel Documents
Culture Documents
Programmation en Python
Données et variables
Variable = référence désignant une adresse mémoire.
Une variable Python est un triplé (nom, type, valeur).
Affectation (ou assignation) désignent l’opération par laquelle on
établit un lien entre le nom de la variable et sa valeur. En Python comme
dans de nombreux autres langages, l’opération d’affectation est
représentée par le signe égal (=).
Déclaration des variables se fait par l’affectation d’une valeur à un
identificateur
>>> x = 2
>>> x
2
>>> n = 7 # définir la variable n et lui donner la valeur 7
>>> msg = "Quoi de neuf ?" # affecter la valeur "Quoi de neuf ?" à la variable msg
>>> pi = 3.14159 # assigner la valeur 3.14159 à la variable pi
Données et variables
L’affectation n’a pas de valeur (on ne peut pas l’utiliser dans une
expression).
Exemple
>>> a = 2
>>> x = (a = 3) + 2
SyntaxError: invalid syntax
La comparaison a une valeur utilisable dans une expression mais
n’a pas d’effet (l’automate interne représentant l’évolution du
programme n’est pas modifié)
Exemple
>>> x = (a == 3) + 2
>>> x
2
Données et variables
On peut aussi utiliser les formes suivantes :
affectation simple
v=4
affectation augmentée
v += 2
affectation de droite à gauche
c = d = 8 # cibles multiples
affectations parallèles d’une séquence
e, f = 2.7, 5.1 # tuple
g, h, i = [’G’, ’H’, ’I’] # liste
Les entrées-sorties
La fonction input permet de lire des données au clavier.
Syntaxe
Variable=input(‘message pour l’utilisateur’)
La fonction standard input() effectue toujours une saisie
en mode texte (la saisie est une chaîne) dont on peut
ensuite changer le type.
int() pour convertir en entier;
float() pour convertir en flottant;
complex() pour convertir en complexe;
str() pour convertir sous forme de chaîne de caractère
Les entrées-sorties
En mode « calculatrice », Python lit-évalue-affiche, mais la
fonction print() reste indispensable aux affichages dans les
scripts (programmes) :
Exemple
a, b = 2, 5
print(a, b) # 2 5
print(”Somme :”, a + b) # Somme : 7
print(a - b, ”est la différence”) # -3 est la différence
print(”Le produit de”, a, ”par”, b, ”vaut :”, a * b)
# Le produit de 2 par 5 vaut : 10
Les entrées-sorties
L’affichage formaté
La méthode format() permet de contrôler finement la création
de chaînes formatées.
Remplacements simples :
print(”{} {} {}”.format(”zéro”, ”un”, ”deux”)) # zéro un deux
print(”{2} {0} {1}”.format(”zéro”, ”un”, ”deux”)) # deux zéro
un
print(”Je m’appelle {}”.format(”Bob”)) # Je m’appelle Bob
print(”Je m’appelle {{{}}}”.format(”Bob”)) # Je m’appelle {Bob}
print(”{}”.format(”-”*10)) # ----------
Les entrées-sorties
Remplacements avec champs nommés :
a, b = 5, 3
print(”The story of {c} and {d}”.format(c=a+b, d=a-b))
# The story of 8 and 2
Formatages à l’aide de liste :
stock = [’papier’, ’enveloppe’, ’chemise’, ’encre’, ’buvard’]
print(”Nous avons de l’{[3]} et du {[0]} en stock”.format(stock))
# Nous avons de l’encre et du papier en stock
Structure de choix
En Python
toute valeur différente de zéro est vraie ;
n’importe quoi avec une longueur différente de zéro est vrai ;
zéro est faux ;
les séquences (liste, dictionnaire, ensemble, tuple) vides sont fausses.
if - [elif] - [else]
syntaxe
if expression_logique :
instruction1
instruction2
….
instructionN
elif expression_logique :
bloc d’instruction
else :
autre_bloc_instructions
Remarque : Il peut y avoir plusieurs clauses elif, mais une seule clause
else
Structure de choix
Exemple (if … elif….else)
if x < 0:
print(”x est négatif”)
elif x > 0:
print(”x est positif ”)
else:
print(”x est nul”)
Syntaxe compacte d’une alternative
Syntaxe
variable= valeur1 if condition else valeur2
Affecte valeur1 à variable si la condition est vraie, valeur2 sinon.
Exemple
plus_petit = x if x < y else y
print(”Plus petit : ”, plus_petit)
La fonction range
La fonction range() génère une séquence de nombres entiers.
range(limite supérieure):liste d’entiers de 0 à limite supérieure moins un
par palier de 1.
range(limite inférieure, limite supérieure):liste d’entiers de la limite
inférieure à la limite supérieure moins un par palier de 1.
range(limite inférieure, limite supérieure, pas) : liste d’entiers de la
limite inférieure à la limite supérieure moins un avec le palier défini.
Exemple
>>> list(range(5,13))
[5, 6, 7, 8, 9, 10, 11, 12]
>>> list(range(4,0,-1))
[4, 3, 2, 1]
>>> list(range(3,16,3))
[3, 6, 9, 12, 15]
>>> liste(range(4))
[0, 1, 2, 3]
18
Prof:Yassine KHARCHACHI 18 Année Scolaire: 2020/2021
CPGE TETOUAN Filière :MP/TSI
Algorithmique Python
Pour i valeur_initiale jusqu’à valeur_finale Pas P faire Cas de pas positif
Instructions for i in range(VI,VF+1,P)
Fin pour instructions
Cas de pas negatif
for i in range(VF,VI-1,P)
instructions
Exemples
Ruptures de séquences
Interrompre une boucle : break
Sort immédiatement de la boucle for ou while en cours
contenant l’instruction
Exemple
for x in range(1, 11): # 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
if x == 5:
break
print(x, end=” ”)
print(”\n Boucle interrompue pour x =”, x)
# affiche :
#1234
# Boucle interrompue pour x = 5
Ruptures de séquences
Court-circuiter une boucle : continue
Passe immédiatement à l’itération suivante de la boucle for ou while
en cours contenant l’instruction ; reprend à la ligne de l’en-tête de
la boucle
Exemple
for x in range(1, 11): # 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
if x == 5:
continue
print(x, end=” ”)
print(”\n La boucle a sauté la valeur 5”)
# affiche :
# 1 2 3 4 6 7 8 9 10
# La boucle a sauté la valeur 5
Extraction de sous-chaînes
Les listes
Collection ordonnée et modifiable d’éléments éventuellement
hétérogènes
Il est possible de changer les éléments individuels d’une liste :
Syntaxe
Éléments séparés par des virgules, et entourés de crochets.
Exemple
>>> L=[1,2,3,4]
>>> jour = ['lundi', 'mardi', 'mercredi', 1800, 20.357, 'jeudi', 'vendredi']
>>> print(jour)
['lundi', 'mardi', 'mercredi', 1800, 20.357, 'jeudi', 'vendredi']
>>> print(jour[2])
mercredi
>>> print(jour[4])
20.357
Les listes
>>> jour[3]= jour[3]+4
>>> print(jour[3])
1804
>>> jour[3]= ‘Juillet’
>>> print(jour)
['lundi', 'mardi', 'mercredi', ‘Juillet’, 20.357, 'jeudi', 'vendredi']
Les listes
Les listes: les fonctions et les méthodes
Les listes
insert (pos, e) : permet d’insérer l’élément e à la position pos.
sort() : cette méthode permet de trier une liste par ordre croissant
ou dans l'ordre alphabétique, selon le type des données de la liste.
Les listes
>>> liste.pop()
>>> liste=[1,2,3,4,5,6]
7
>>> len(liste)
>>> liste.index(1)
6
4
>>> liste.append(7)
>>> liste.reverse()
>>> liste
>>> liste
[1, 2, 3, 4, 5, 6, 7]
[6, 1, 5, 4, 3, 2]
>>> liste.insert(5,1)
>>> liste.sort()
>>> liste
>>> liste
[1, 2, 3, 4, 5, 1, 6, 7]
[1, 2, 3, 4, 5, 6]
>>> liste.remove(1)
>>> liste.extend([9,3])
>>> liste
>>> liste
[2, 3, 4, 5, 1, 6, 7]
[1, 2, 3, 4, 5, 6, 9, 3]
Les listes
Les listes: Manipulation des tranches
mots = [’poisson’, ’sel’, ’miel’, ’confiture’, ’thé’]
mots[2:4] = [] # effacement par affectation d’une liste vide
print(mots) # ➔ [’poisson’, ’sel’, ’thé’]
mots[1:3] = [’salade’]
print(mots) # ➔ [’poisson’, ’salade’]
mots[1:] = [’mayonnaise’, ’poulet’, ’tomate’]
print(mots) # ➔ [’poisson’, ’mayonnaise’, ’poulet’, ’tomate’]
mots[2:2] = [’miel’] # insertion en 3è position
print(mots) # ➔ [’poisson’, ’mayonnaise’, ’miel’, ’poulet’, ’tomate’]
Les listes
{x2 / x [2; 10]} ➔ [x**2 for x in range(2, 11)]
Exemple
valeurs_s = [”12”, ”78”, ”671”]
conversion d’une liste de chaînes en liste d’entier
valeurs_i = [int(i) for i in valeurs_s] # [12, 78, 671]
calcul de la somme de la liste avec la fonction intégrée sum
print(sum([int(i) for i in valeurs_s])) # ➔761
Initialisation d’une liste 2D
multi_liste = [[0]*2 for ligne in range(3)]
print(multi_liste) # [[0, 0], [0, 0], [0, 0]]
Les tuples
Définition
Collection ordonnée et non modifiable d’éléments
éventuellement hétérogènes. Contrairement à une liste, ils
ont une taille fixée (aucune méthode ne peut ajouter une
coordonnée en place). On peut accéder à une coordonnée
par indexation, mais pas la modifier :
Syntaxe
Éléments séparés par des virgules, et entourés de
parenthèses.
Exemple
mon_tuple = (’a’, 2, [1, 3])
Les tuples
Principales opérations et méthodes applicables à un tuple
len(U) nombre de coordonnées
U+V retourne la concaténation
n * U ou U * n concaténation répétée n fois
U.count(a) retourne le nombre d’occurrences de a
U.index(a) retourne le premier indice de a, ou une
erreur si a n’est pas un attribut
a in U teste l’appartenance de a à U
Les dictionnaires
Définition Un tableau associatif est un type de données permettant
de stocker des couples clé : valeur, avec un accès très rapide à la
valeur à partir de la clé, la clé ne pouvant être présente qu’une seule
fois dans le tableau.
Il possède les caractéristiques suivantes :
l’opérateur d’appartenance d’une clé (in) ;
la fonction taille (len()) donnant le nombre de couples stockés ;
on peut le parcourir mais n’est pas ordonné.
Python propose le type standard dict.
Les dictionnaires (dict)
Comme un dictionnaire de traduction français-anglais par exemple,
les dictionnaires Python fonctionnent par couple clé :valeur
Syntaxe
Collection de couples clé : valeur entourée d’accolades.
Les dictionnaires
insertion de clés/valeurs une à une
d1 = {} # création d’un dictionnaire vide
d1[”nom”] = ‘’SABER" #le stockage d’une valeur à l’aide d’une
certaine clé
d1["prenom"]= ‘’Hasan"
d1[”taille”] = 1.78
print(d1) # ➔ {'taille': 1.78, 'prenom': ‘Hasan', 'nom': ‘SABER'}
l’extraction de la valeur en donnant la clé
print(d1["nom"]) # ➔ SABER
définition en extension
d2 = { 'nom': ‘SABER','prenom': ' Hasan ','taille': 1.78}
print(d2) # ➔{'taille': 1.78, 'prenom': ' Hasan ', 'nom': ‘SABER'}
Les dictionnaires
d3 = {x: x**2 for x in (2, 4, 6)}
print(d3) # ➔{2: 4, 4: 16, 6: 36}
utilisation de paramètres nommés
d4=dict(nom= ‘SABER’,prenom= ' Hasan ',taille= 1.78)
print(d4) # ➔{'prenom': ' Hasan 'taille': 1.78, 'nom': ‘SABER}
utilisation d’une liste de couples clés/valeurs
d5=dict([('nom', ‘SABER'),('prenom', ' Hasan '),('taille', 1.78)])
print(d5) # ➔{'taille': 1.78, 'prenom': ' Hasan ', 'nom': ‘SABER'}
Les dictionnaires
d4=dict(nom= ‘SABER',prenom= ‘Hasan',taille= 1.78)
d4.pop(taille) # ➔1.78 # supprime et renvoie la valeur correspondant à la
clé donnée en argument
print(d4) # ➔{'prenom': ‘Hasan', 'nom': ‘SABER'}
tel = {’k1’: 4098, ’k2’: 4139}
tel[’k3’] = 4127 #insertion
print(tel) # ➔ {'k2': 4139, 'k3': 4127, 'k1': 4098}
del tel[’k2’] # la suppression de couple (’k2’: 4139)
tel[’k4’] = 4127 # insertion de couple (’k4’: 4127)
print(tel) # ➔ {'k3': 4127, 'k1': 4098, 'k4': 4127}
print(list(tel.keys())) # ➔ ['k3', 'k1', 'k4'] # afficher la liste des clés
print(sorted(tel.keys())) # ➔ ['k1', 'k3', 'k4']#afficher la liste des clés
triée
print(sorted(tel.values())) # ➔ [4098, 4127, 4127]# afficher la liste
des valeurs triée
Piles
La pile est une structure de données qui ne permet que deux
opérations :
Piles
Une pile est à comparer à une pile d'assiettes par
exemple. Les concepts associés aux piles sont : LIFO
(Last in, first out), Premier arrivé, dernier servi.
Piles
Les listes Python permettent de simuler les piles :
len(p) permet de savoir si la pile est vide
Piles
créer une pile vide et ajouter un premier élément :
pile = []
pile.append(5)
pile.append(20)
pile.append(30)
Piles
Pour dépiler un élément, on utilise la fonction pop, qui
enlève le dernier élément ajouté et le renvoie :
a = pile.pop()
print(a)
--> «30
print(pile)
Utilisation de piles
Files
La File est une structure de données qui ne permet que deux
opérations :
Files
Les concepts associés aux files sont : FIFO (First in, first
out), Premier arrivé, premier servi.
Files
Les listes Python ne simulent pas correctement des files.
En effet, les objets ne peuvent être enfilés en temps
constant qu'en fin de liste. Ils doivent donc être défilés
en début de liste. Or l'insertion en début de liste ne se
fait pas en temps constant (car Python décale les autres
valeurs).
Files
Il existe un type supplémentaire : deque, dans le
module collections permettant de simuler les files
(queue en anglais) :
from collections import deque pour utiliser le module
d=deque() : création d'une file vide
d=deque( (4,5,6) ) : création d'une file à partir d'un tuple
len(d) permet de savoir si la file est vide
d.pop() renvoie l'élément de tête de file
d.appendleft(v) ajoute un élément au début de la
file
Utilisation de files
les impressions dans un système d’exploitation sont
gérées par une file.
Programmation modulaire(fonction )
Une fonction est un algorithme destiné à être utilisé par
d′autres algorithmes ou fonctions.
Une fonction peut être assimilée à une boîte noire (un
composant) qui a des entrées et des sorties.
Modalités d’appel
Algorithme
Fonction 1
Début
Instruction 1 Fonction 2
Début
.
.
.
. Début
.
. .
Instruction k
Instruction d’appel .
Instruction d’appel
. .
Instruction k+2
.
.
. Fin
.
.
Fin
Instruction n
Fin
Pour utiliser la fonction que nous venons de définir, il suffit de l'appeler par son
nom. Ainsi :
>>> table7()
Provoque l'affichage de :
7 14 21 28 35 42 49 56 63 70
Pour tester cette nouvelle fonction, il nous suffit de l'appeler avec un argument.
>>> table(13)
13 26 39 52 65 78 91 104 117 130
>>> table(9)
9 18 27 36 45 54 63 72 81 90
def cube(n):
return n**3
def volumeSphere(r):
return 4 * 3.1416 * cube(r) / 3
Fonction lambda
Une des particularités de Python est les fonctions
déclarées à la volée aussi appelées fonctions lambda. Ces
fonctions seront en fait déclarées en plein milieu de votre
code et seront anonymes. Pour les déclarer, le mot clé
def ne sera pas nécessaire, vous devrez utiliser le mot clé
lambda.
La syntaxe générale d'une fonction lambda :
lambda arg1, arg2 ... : instructions
Exemple
Puissance = lambda nombre, puissance : nombre**puissance
print(Puissance(2,4))
La récursivité
Une application très intéressante des fonctions est ce que l'on appelle la
récursivité. une fonction est dite récursive lorsqu'elle fait appel à elle-
même.
Exemple
def factoriel(nombre) :
"""
Cette fonction retourne le factoriel d'un nombre.
nombre : Le nombre dont on veut le factoriel.
return : nombre!
"""
if nombre == 1 or nombre == 0 :
return 1
else :
return nombre * factoriel(nombre - 1)
La récursivité
Calcul x**n:
Modules complémentaires
De nombreuses fonctions sont définies dans des modules
spécialisées. Pour utiliser une fonction d’un module mod, il faut
importer cette fonction, ou le module entier
Avant l’utilisation de cette fonction. Cela peut se faire de 3
manières :
Import simple du module
import mod
Import d’une fonction d’un module
from mod import fonct
Import de toutes les fonctions d’un module
from mod import *
Le module math
e constante e, base de l’exponentielle
exp(x) exponentielle de x
log(x) logarithme népérien
log10(x) logarithme en base 10
pi le nombre pi
cos(x) cosinus
sin(x) sinus
tan(x) tangente
acos(x) arccos
asin(x) arcsin
atan(x) arctan
Le module math
cosh(x) cosinus hyperbolique
sinh(x) sinus hyperbolique
tanh(x) tangente hyperbolique
floor(x) partie entière au sens mathématique
ceil(x) partie entière par excès
sqrt(x) racine carrée
factorial(x) factorielle (pour x entier)
Module time
time.perf_counter()
donne une valeur d’horloge correspondant à l’instant en
cours en seconde.
Cette fonction sera utilisée comme suit :
import time
debut = perf_counter()
instructions
fin = perf_counter()
temps_execution = fin - debut
Module sqlite3
connection = sql.connect(’base.db’)
crée un objet de connexion vers la base base.db
cur = connection.cursor()
crée un curseur qui permettra des modifications de la base
cur.execute("instruction SQL")
Exécute l’instruction donnée, dans la syntaxe SQL, dans la
base pointée par le curseur
Les Fichiers
Dans tous les langages de programmation, on utilise la
notion de fichier. Qui désigne un ensemble
d'informations enregistré sur un support (CD-Rom,
disque dur, etc.).
Les principales manipulations sur un fichier sont :
L'ouverture du fichier
La lecture ou l’écriture d'un élément dans un fichier
La fermeture du fichier.
Les Fichiers
Tout fichier doit être ouvert avant de pouvoir accéder à
son contenu en lecture et/ou écriture.
L’ouverture d’un fichier est réalisée par la fonction open
selon la syntaxe suivante :
Identificateur_fichier=open(nom_fichier,mode_ouverture)
Les Fichiers
Les principaux modes d’ouverture sont :
"r" comme read (lire) : ouverture en lecture uniquement (le
fichier doit exister !)
"w" comme write (écrire) : ouverture en écriture uniquement
(crée le fichier, l'efface préalablement s'il existe déjà)
"a" comme append (ajouter) : ouverture en mise à jour (crée le
fichier, écrit à partir de la fin du fichier s'il existe déjà)
Tout programme manipulant un fichier doit donc être
encadré par les deux appels de fonctions open() et
close().
Les Fichiers
L’écriture
L’écriture dans un fichier se fait avec la méthode write()
en mode écriture. Cette fonction permet d’écrire une
chaîne de caractères dans le fichier.
Syntaxe
Fichier.write(chaîne de caractères)
Exemple
fichier = open("test.txt","w")
fichier.write("Salut ! J'essaye d'écrire dans un fichier !")
fichier.close()
Les Fichiers
Pour écrire dans un fichier, il existe aussi la fonction
appelée writelines qui permet d'écrire tous les
éléments d'une liste dans un fichier.
Exemple
liste = ["Pour écrire dans un fichier on utilise :\n","1) write\n",
"2)writelines\n"]
fichier = open("test.txt","w")
fichier.writelines(liste)
fichier.close()
Les Fichiers
Lecture
Apres avoir ouvrir le fichier, le langage Python permet
plusieurs méthodes d’accès à un fichier :
read(n) : lit au plus n caractères dans le fichier s’il reste
encore plus de n caractères de la position courante à la fin de
fichier.
Syntaxe
Chaine=fichier.read(n)
Exemple
fichier = open("test.txt","r")
chaine=fichier.read(4)
print(chaine)
fichier.close()
Les Fichiers
L’utilisation de la méthode read() sans paramètre
permet de lire tout le fichier.
Exemple
fichier = open("test.txt","r")
chaine=fichier.read()
print(chaine)
fichier.close()
Les Fichiers
readline(n) lit au plus n caractères dans le fichier s’il
reste encore plus de n caractères de la position courante
à la fin de la ligne courante.
Exemple
fichier = open("test.txt","r")
chaine=fichier.readline(12)
print(chaine)
chaine=fichier.readline(100)
print(chaine)
fichier.close()
Les Fichiers
L’utilisation de la méthode readline() sans paramètre
permet de lire tous les caractères contenant entre la
position courante et la fin de la ligne.
Exemple
fichier = open("test.txt","r")
chaine=fichier.readline()
print(chaine)
chaine=fichier.readline()
print(chaine)
chaine=fichier.readline()
print(chaine)
fichier.close()
Les Fichiers
readlines() : cette méthode permet de récupérer
l'ensemble de contenu de fichier et de le mettre dans
une liste qui sera en suite retournée.
Exemple
fichier = open("test.txt","r")
liste = fichier.readlines()
print(liste[0])
print(liste[1])
print(liste[2])
fichier.close()
Les Fichiers
En Python, un fichier est en fait une séquence, Vous
pouvez donc facilement parcourir les lignes en utilisant
une boucle for.
Exemple
fichier = open("test.txt","r")
for ligne in fichier :
print(ligne)
fichier.close()
Les Fichiers
Le déplacement dans un fichier
La question qui se pose est comment un programme fait
pour savoir où l'on en est dans le fichier lorsqu'on lui
demande d'appliquer la fonction readline...
La position actuelle dans le fichier est accessible via la
fonction tell qui retourne la position actuelle du
programme dans le fichier.
Il est ensuite possible de déplacer le curseur de lecture
du fichier à l'aide de la fonction seek (chercher).
Les Fichiers
La fonction seek accepte deux arguments. Le premier
indique le nombre d'octet dont on souhaite se déplacer.
Le second indique la position à partir de laquelle on
souhaite se déplacer (0 pour commencer du début du
fichier).
Exemple
fichier = open("test.txt","r")
Fichier.tell()
fichier.seek(42,0)
ligne=fichier.readline()
print(ligne)
fichier.close()