Académique Documents
Professionnel Documents
Culture Documents
III Opérateurs
Opérateurs relationnels
II Variable et affectation
Comparaison d’identité is
Une variable est une référence associée à un objet déjà créé en mémoire. Elle n'a pas de type et n'est pas déclarée.
is not
Toute variable doit être affectée avant son utilisation. L'identificateur (nom) de la variable ne peut contenir que des
caractères alphanumériques et le caractère '_' et ne débutant pas par un chiffre. Comparaison de valeur x==y ; x!=y 2!=5 # donne True
2==5 # donne False
Comparaison riche < ; > ; <= ; >=
L’affectation permet d’associer un nom à un objet (instance d'une classe) en mémoire :
Opérateurs logiques
>>> nom = objet nom id(nom)== id(nom1) Produisent un booléen and ; or ; not
Objet
ou bien (bool)
Ainsi une affectation de la forme : nom is nom1
nom1 Classe de l’objet Opérateurs avec assignation
>>> nom1 = nom
référence le même objet avec autre nom (nom1). Produisent le même x += y # x = x + y
type(nom)
résultat que l'affectation x -= y # x = x y
du résultat de l'opération x *= y # x = x * y
effectuée
x /= y # x = x / y
x //= y # x = x // y
On obtient le type d'un objet à l'aide de la fonction type(objet) et son adresse mémoire désignant son identité à
l'aide de id(objet). x %= y # x = x % y
x **= y # x = x ** y
IV Classes élémentaires
Les classes élémentaires sont immuables (non modifiables). Les opérations appliquées aux instances de ces classes
génèrent de nouvelles instances comme le montre l'exemple suivant :
>>> x=5
VI Structures de contrôle
>>> id(x)
2053437424 Un bloc de code est un groupe d’instructions Python indentées précédées par ":". Un bloc peut en inclure d'autres.
>>> x+=1 # x référence une nouvelle instance
>>> id(x) Description Syntaxe Exemples
2053437440
Structure conditionnelle
Permet de conditionner if cond : #maximum de 3 entiers x, y, z
Classes élémentaires Description Exemples / Remarques bloc1 if x > y and x >z :
l'exécution d'un ou plusieurs
NoneType Classe de l’objet None (objet type(None) # donne NoneType
blocs d’instructions, mais un elif cond2 : print(x)
n'ayant pas de valeur) seul est exécuté. bloc2 elif y > z:
Bool Booléens type(True) # donne bool … print(y)
bool(20) # donne True else : else :
True et False sont les seules
bool(0) # donne False blocn print(z)
instances de cette classe.
x=y=2; x==y # donne True
Boucle conditionnelle
x,y=1,2; x==y # donne False
y=2 ; type(y) # donne Int Permet d’exécuter un bloc while cond_exécution : #pgcd de x et y
Int Entiers relatifs (Z)
x = int('52') # x prend 52 tant que la condition bloc while x % y != 0 :
int(22.5) # donne 22 d'exécution de la boucle est x, y = y, x % y
y=3.5 ; type(y) #donne Float
à True. print(y)
Float Nombres flottants (IR )
x = float('22.2')#x prend 22.2 La condition est toujours
x = -1e33 #x prend -1e+33 testée avant l’exécution du
z = 3+1j #ou z = complex(3,1)
bloc de la boucle.
Complex Nombres complexes (C)
Permet d’exécuter un bloc while True : #saisie d’une voyelle
type(z) # donne Complex
jusqu’à ce que la condition bloc while True:
complex(5) # donne(5+0j)
z.real # donne 3.0 (float)
d’arrêt devienne True. La if cond_arrêt : v=input('saisir une voyelle:')
condition d’arrêt est break if v in ['a','e','i','o','u','y']:
z.imag # donne 1.0 (float)
toujours testée après break
z.conjugate() # donne 3-1j l’exécution du bloc de la
Remarque boucle.
bool (x) # retourne False si l'évaluation de x est nulle et True autrement Boucle NON conditionnelle
int(x) # retourne un entier si x est un nombre ou une chaine de caractère contenant Permet d’exécuter le bloc for v in itérable: #calcul du produit des éléments d’une
un nombre entier. bloc liste
pour chaque élément v de
float(x) # retourne un réel si x est un nombre ou une chaine de caractère contenant l’itérable. Un itérable est une p = 1
un nombre réel. collection d’objets (voir for v in [1,8,7]:
section VII sur les itérables). p*=v
complex(x,y) # retourne un nombre complex formé par la partie réelle x et la partie
imaginaire y. Expression conditionnelle
Python offre la possibilité de expr1 if cond1 else #maximum de 2 valeurs x ,y
former des expressions dont expr2 m = x if x > y else y
V Opérations d'entrée/sortie l’évaluation est soumise à
une condition. Le résultat #les éléments négatifs de L1 sont
Description Syntaxe Exemples est l’évaluation de remplacés par 0 dans L2 (voir
print(expr1, … , exprn) print('bienvenue à la formation') expression1 si la condition l’itérable liste dans la section VII)
Sortie
est True, et celle de L1=[-1,0,5,3]
Entrée nom = input() >>> nom= input('votre nom svp: ') expression2 sinon. expr1 if cond1 else L2=[0 if x<0 else x for x in L]
nom = input("message") votre nom svp: Foulen Cette construction ne permet expr2 if cond2 else
Input prend (optionnel) et
>>> print('Bonjour',nom) pas l’utilisation du mot expr3 x=int(input("?"))
retourne une chaîne de
caractères Bonjour Foulen réservé elif mais on peut ">0" if x>0 else "<0" if x<0 else "=0"
emboîter deux expressions
conditionnelles.
La mutabilité : classes modifiables (list, set, dict) et classes non modifiables (range, str et tuple). Un intervalle défini par range, également considéré comme une séquence, est un itérable ou conteneur formé
L’ordre : classes ordonnées appelées encore séquences (str, tuple, list, range) et classes non ordonnées (set par une succession d’entiers.
et dict).
range(debut, fin, pas) génère l’intervalle [debut, fin [ par pas entier relatif égal à pas.
VII.1 Opérations communes aux itérables VII.2.1 Opérations communes aux séquences
Le tableau suivant présente quelques opérations communes applicables aux instances des itérables. Le tableau suivant liste quelques opérations communes à toutes les séquences.
Parcours d’un itérable for item in iter : lst = [1,2,5] Comptage du nombre s.count(item) lst = [0,1,0,1,1,1]
#opérations for e in lst: d’occurrences lst.count(1) # donne 4
manipulant item print(e) ch ="ali baba"
Énumération des éléments enumerate(iter) ch = "cem" ch.count("a") # donne 3
d’un itérable enumerate(iter, for i, v in enumerate(ch): # première occurrence lst.index(0) # donne 0
Retour de l’index d’un
start_index) s.index(item)
print(i, v) item lst.index(0,1)# donne 2
# donne en sortie # à partir de start
0 c Déclenche ValueError si lst.index(5) # ValueError
s.index(item, start)
1 e item not in s.
2 m Parcours d’un itérable for ind in range(len(iter)): lst = [1,2,5]
indexé #opérations manipulant for i in range(len(lst)):
iter[ind]
print(lst[i])
Une chaîne est une séquence non modifiable et ordonnée de caractères. Le tableau suivant résume les Une liste est une séquence, ordonnée et modifiable, d’éléments éventuellement hétérogènes séparés par une
principales opérations applicables aux chaînes. virgule et délimitée par une paire de crochets.
Le tableau suivant résume les principales fonctions/méthodes applicables aux listes.
Description Syntaxe Exemples / Remarques
Création d’une chaîne de #chaîne simple: s = "bonsoir" # ou encore Description Syntaxe Exemples
caractères ("…" ,'…') s = 'bonsoir' Création d’une liste vide L=[ ] #ou L=[1, 'python', True, 1+1j]
#chaîne multilignes: s1="""chaîne L=list( )
(""" … """ ,''' …''') multi-
lignes""" Création d’une liste à L=list(itérable) list('ABCA') # donne ['A','B','C','A']
#équivalente à partir d’un itérable list({3, 'A',4}) # donne [3,4,'A']
s1 = 'chaîne\nmulti-\nlignes' list((2,2,(1,2)))# donne [ 2,2,(1,2)]
Retour d’une chaîne en Ch.lower ( ) Ch='fG15Z' list({2 :45, 'x':[1,2]}# donne [2,'x']
minuscule identique à Ch Ch.lower( ) # donne 'fg15z' list(145)# TypeError
Retour d’une chaîne en Ch.upper ( ) Ch='fG15Z' L.append (objet) L.append(2020) ; L
Ajout d’un objet à la fin
majuscule identique à Ch Ch.upper ( ) # 'FG15Z' d’une liste #donne [1, 'python', True, (1+1j), 2020]
Retour d’une liste des sous- Ch.split(sep) Ch='Epsilon 2018/2019' #remplissage d'une liste par n chaînes
chaînes en utilisant un séparateur Ch.split( ) # donne lst = list()
sep ['Epsilon', '2018/2019']
for i in range(n):
Ch.split('0') # donne [Epsilon
Par défaut, le séparateur est le 2', '18/2', '19'] x = input("donner l[{}]:".format(i))
caractère espace lst.append(x)
Retour d’une chaîne identique à Ch.strip(sep) Ch="*la chaîne*"
Ajout d’un objet x dans L L.insert(i,x) L.insert(-1 ,'concours') ; L # donne
Ch en supprimant les Ch.strip('*') [1,'python',True,(1+1j),'concours',2020]
à l’indice i
occurrences d’un séparateur sep # donne 'la chaîne'
du début et de la fin si elles Suppression de la première L.remove(x) L.remove(1+1j) ; L # donne
existent. Par défaut sep est occurrence d’un l'objet x [1, 'python', True, 'concours', 2020]
l'espace. dans L
Retour d’une chaîne de Sep.join(itérable) L=['abc','12','azer'] ValueError si x not in L.
caractères résultante de la '/'.join(L) L.extend(t) L.extend({-1,2}) ; L # donne
Ajout d’éléments de
concaténation par sep des # donne 'abc/12/azer' l’itérable t à la fin de L [1,'python',True,'concours',2020,2,-1]
chaînes de l’itérable ' '.join(L)
Suppression et retour du L.pop() L.pop() # donne -1
TypeError est généré si l’itérable # donne 'abc 12 azer'
dernier élément de L L # donne
contient un objet qui n'est pas de [1,'python',True,'concours',2020,2]
type str.
Suppression et retour de L.pop(i) L.pop(2) # donne True
Retour d’une chaîne de Ch.format(paramètres) Ch = 'Epsilon {}/{}' l’élément d’indice i de la L # donne
caractères en remplaçant chaque Ch.format(2019,2020) liste L [1, 'python', 'concours', 2020, 2]
‘{}’ par les paramètres passés à # donne 'Epsilon 2019/2020'
la méthode (objets de classes
quelconques).
Retour de l’Unicode (entier) du ord(caractère) ord ('A') # 65 VII.2.4 La classe tuple
caractère passé en paramètre ord('a') # 97
Un tuple est une séquence, ordonnée et non modifiable, d’éléments éventuellement hétérogènes séparés par
Retour du caractère associé à la chr(entier) chr(65) # donne 'A' une virgule. Le tableau suivant résume les principales fonctions/méthodes applicables aux tuples :
valeur UNICODE passée chr(10) # donne '\n'
paramètre.
Inclusion : s1 ⊂ s2 s1 <= s2 {1,2} <= {1,2,5}# donne True Parcours des couples for k, v in d.items(): for k, v in d.items():
{1,2} <= {1,2} # donne True clé, valeur d’un traitement print(k,v)
Inclusion stricte : s1 < s2 {1,2} < {1,2,5} # donne True dictionnaire
s1 ⊊ s2 s1.issuperset(s2) {1,2} < {1,2} # donne False
Support de Cours de Laila Hammami pour 1ère année préparatoire sections MP-PC-T, IPEIN, Année
XIV.3 Classes de complexité asymptotique universitaire 2019-2020.
Support de Cours de W.Meftah, Rappel, pour 2ème année préparatoire sections MP-PC-T, IPEIS, Année
Nom de la classe Complexité Exemples
universitaire 2019-2020.
Constante 𝑂(1) Accès à un élément d’une liste l[i].
Additionner multiplier un nombre constant d’objets.
Logarithmique 𝑂(log(𝑛)) Recherche dichotomique 𝑛 = 𝑙𝑒𝑛(𝑙𝑠𝑡).
Méthode de bissectrices pour trouver le zéro d’une fonction Sites Web :
𝑛= .
Exponentiation rapide. https://www.python-course.eu/
Trouver l’écriture d’un entier n dans une base b.
https://www.ics.uci.edu/~brgallar/index.html
Linéaire 𝑂(𝑛) Trouver le maximum/minimum d’une liste 𝑛 = 𝑙𝑒𝑛(𝑙𝑠𝑡).
Tester l’appartenance d’un élément dans une liste 𝑛 =
𝑙𝑒𝑛(𝑙𝑠𝑡).
Produit scalaire de deux vecteurs.
Quasilinéaire 𝑂(𝑛 log (𝑛)) Trier une liste lst.sort() : 𝑛 = 𝑙𝑒𝑛(𝑙𝑠𝑡).
Tri fusion / Tri rapide
Quadratique 𝑂(𝑛 ) Tri par sélection/insertion/bulles 𝑛 = 𝑙𝑒𝑛(𝑙𝑠𝑡).
Remplissage d’une matrice carrée.
Somme de deux matrices carrées
Polynomiale 𝑂(𝑛 ) 𝑜ù 𝑝 ≥ 2 Multiplication de deux matrices 𝑂(𝑛 ).
Réduction de Gauss.
Inversion d’une matrice.
Exponentielle 𝑂(𝑐 ) 𝑜ù 𝑐 > 1 Trouver tous les sous-ensembles d’un ensemble de taille n.
Trouver un mot de basse de taille n par brute force.
Afficher toutes les valeurs binaires qui s’écrivent sur n bits.
Factorielle 𝑂(𝑛!) Résoudre le problème du voyageur du commerce (avec n =
nombre de villes) par brute force.
Trier une liste de taille n par brute force.
Exemples :
4 𝑛 + 100000000 est 𝑂(𝑛). 2 +𝑛 est 𝑂(2 ).
100 𝑛 + 𝑛 + 300000 𝑛 est 𝑂(𝑛 ). 2 + 𝑛! est 𝑂(𝑛!).