Python : Exécution, Types et Variables
Python : Exécution, Types et Variables
Partie II :
Types, affectations, expressions
Les instructions de contrôle
Les fonctions
FZ SALMAM CCN-S1(2023/2024) 2
1
12/10/2023
Définition
Un identificateur est une suite de caractères servant à désigner les
différentes entités manipulées par un programme : variables, fonctions,
classes...
FZ SALMAM CCN-S1(2023/2024) 4
2
12/10/2023
Exemples :
NB_ITEMS = 12 # UPPER_CASE
class MaClasse : pass # TitleCase
def maFonction() : pass # camelCase
mon_id = 5 # lower_case
FZ SALMAM CCN-S1(2023/2024) 5
FZ SALMAM CCN-S1(2023/2024) 6
3
12/10/2023
Notion d’expression
Définition
Une expression est une portion de code que l’interpréteur Python peut
évaluer pour obtenir une valeur.
Les expressions peuvent être simples ou complexes. Elles sont formées d’une
combinaison de littéraux représentant directement des valeurs,
d’identificateurs et d’opérateurs.
FZ SALMAM CCN-S1(2023/2024) 7
Définition
Le type d’une donnée caractérise sa nature (est-ce que c’est un entier, un
nombre à virgule, une chaîne de caractères ... ?) et par voie de conséquence
les opérations qu’il est possible de lui appliquer (on peut diviser des
nombres, mais peut être pas des chaînes de caractères).
FZ SALMAM CCN-S1(2023/2024) 8
4
12/10/2023
Le type int (entier) n’est limité en taille que par la mémoire de la machine.
Dans la plupart des autres langages les entiers sont codés sur un nombre fixe
de bits et ont un domaine de définition limité auquel il convient de faire
attention.
Les entiers littéraux sont décimaux par défaut, mais on peut aussi utiliser les
bases suivantes :
FZ SALMAM CCN-S1(2023/2024) 9
Opérations arithmétiques:
>>> 20 + 3
23
>>> 20 - 3
17
>>> 20 * 3
60
>>> 20 ** 3
8000
>>> 20 / 3 # produit une division flottante, même entre deux
entiers ;
6.666666666666667
>>> 20 // 3 # produit une division entière.
6
>>> 20 % 3 # modulo (reste de la division entière)
2
>>> abs(3 - 20) # valeur absolue
17
FZ SALMAM CCN-S1(2023/2024) 10
10
5
12/10/2023
Bases usuelles: Un entier écrit en base 10 (par exemple 179) peut être
représenté en binaire, octal et hexadécimal en utilisant les syntaxes
suivantes:
>>> 0b10110011 # binaire
179
>>> bin(179)
’0b10110011’
>>> 0o263 # octal
179
>>> oct(179)
’0o263’
>>> 0xB3 # hexadécimal
179
>>> hex(179)
’0xb3’
FZ SALMAM CCN-S1(2023/2024) 11
11
Les deux seules valeur du type bool sont True et False. Ces deux valeurs
peuvent être entrées littéralement ou peuvent être le résultat d’opérateurs
de comparaison, comme >, <, >=, <=, == (égal), !=
(différent).
>>> 2 > 8
False
>>> 2 <= 8 < 15
True
Les opérateurs dont les opérandes sont des booléens sont les opérateurs
logiques or, and, not
FZ SALMAM CCN-S1(2023/2024) 12
12
6
12/10/2023
Un float est noté avec un point décimal (jamais avec une virgule) ou en
notation exponentielle avec un « e » symbolisant le « 10 puissance » suivi des
chiffres de l’exposant. Par exemple :
2.718 .02 -1.6e-19 6.023e23
13
14
7
12/10/2023
Variables et affectation
Les variables
Dès que l’on possède des types de données, on a besoin des variables pour
stocker les données.
Définition
Une variable est un identificateur associé à une valeur. En Python, c’est une
référence d’objet.
FZ SALMAM CCN-S1(2023/2024) 15
15
Variables et affectation
L’ affectation
Définition
On affecte une variable par une valeur en utilisant le signe = (qui n’a rien à
voir avec l’égalité en math !). Dans une affectation, le membre de gauche
reçoit le membre de droite ce qui nécessite d’évaluer la valeur correspondant
au membre de droite avant de l’affecter au membre de gauche.
import math
a = 2
b = 7.2 * math.log(math.e / 45.12) - 2*math.pi
c = b ** a
FZ SALMAM CCN-S1(2023/2024) 16
16
8
12/10/2023
Variables et affectation
Affecter n’est pas comparer !
La comparaison a une valeur (de type bool) utilisable dans une expression
mais n’a pas d’effet :
>>> c = ”a”
>>> s = (c == ”a”) and True
>>> s
True
FZ SALMAM CCN-S1(2023/2024) 17
17
Variables et affectation
Les variantes de l’affectation
FZ SALMAM CCN-S1(2023/2024) 18
18
9
12/10/2023
Variables et affectation
Représentation graphiques des affectations
FZ SALMAM CCN-S1(2023/2024) 19
19
Définition
Une chaîne de caractères (string) est une séquence de caractères, c’est–à–
dire des caractères qui se suivent les uns derrières les autres. Une chaîne de
caractères peut ne contenir aucun caractère : on l’appelle chaîne vide.
Ce type de données est Non modifiable: signifie qu’une donnée, une fois
créée en mémoire, ne pourra plus être changée ; toute transformation
résultera en la création d’une nouvelle valeur distincte.
FZ SALMAM CCN-S1(2023/2024) 20
20
10
12/10/2023
Trois syntaxes de chaîne sont disponibles. Remarquez que l’on peut aussi
utiliser le ’ à la place de ”, ce qui permet d’inclure une notation dans l’autre :
FZ SALMAM CCN-S1(2023/2024) 21
21
FZ SALMAM CCN-S1(2023/2024) 22
22
11
12/10/2023
Pour indexer une chaîne, on utilise l’opérateur [] dans lequel l’index, un entier
signé qui commence à 0, indique la position d’un caractère :
>>> s = ”Rayons X” # len(s) ==> 7
>>> s[0]
’R’
>>> s[2]
’y’
>>> s[-1]
’X’
>>> s[-3]
’s’
FZ SALMAM CCN-S1(2023/2024) 23
23
FZ SALMAM CCN-S1(2023/2024) 24
24
12
12/10/2023
25
FZ SALMAM CCN-S1(2023/2024) 26
26
13
12/10/2023
>>> a = "azert"
>>> help(a.upper)
Help on built-in function
upper: upper(...)
S.upper() -> string
Return a copy of the string S converted to uppercase.
>>> a.upper()
'AZERT'
FZ SALMAM CCN-S1(2023/2024) 27
27
Les entrées-sorties
Les entrées
La fonction input() effectue toujours une saisie en mode texte (la valeur
retournée est une chaîne) dont on peut ensuite changer le type (on dit aussi
« transtyper » ou cast en anglais).
FZ SALMAM CCN-S1(2023/2024) 28
28
14
12/10/2023
Les entrées-sorties
Les sorties
>>> 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
>>> print(”On a <”, 2**32, a*b, ”> cas !”, sep=”~~~”)
On a <~~~4294967296~~~10~~~> cas !
>>> # pour afficher autre chose qu’un espace en fin de ligne :
>>> print(a, end=”@”)
2@
FZ SALMAM CCN-S1(2023/2024) 29
29
\\ affiche un antislash
\’ apostrophe
\” guillemet
\a sonnerie (bip)
\b retour arrière
\f saut de page
\n saut de ligne
\r retour en début de ligne
\t tabulation horizontale
\v tabulation verticale
\N{nom} caractère sous forme de code Unicode nommé
\uhhhh caractère sous forme de code Unicode 16 bits
\Uhhhhhhhh caractère sous forme de code Unicode 32 bits
\ooo caractère sous forme de code octal
\xhh caractère sous forme de code hexadécimal
FZ SALMAM CCN-S1(2023/2024) 30
30
15
12/10/2023
Partie II :
Types, affectations, expressions
Les instructions de contrôle
Les fonctions
FZ SALMAM CCN-S1(2023/2024) 31
31
FZ SALMAM CCN-S1(2023/2024) 32
32
16
12/10/2023
Conditions
Définition
>>> x = 5
>>> if x < 0:
... print(”x est négatif”)
... elif x % 2 != 0:
... print(”x est positif et impair”)
... print (”ce qui est bien aussi !”)
... else:
... print(”x n’est pas négatif et est pair”)
...
x est positif et impair
ce qui est bien aussi !
FZ SALMAM CCN-S1(2023/2024) 33
33
Conditions
Test d’une valeur booléenne :
>>> x = 8
>>> estPair = (x % 2 == 0)
>>> estPair
True
>>> if estPair: # mieux que ”if estPair == True:”
... print(’La condition est vraie’)
...
La condition est vraie
FZ SALMAM CCN-S1(2023/2024) 34
34
17
12/10/2023
Conditions
Syntaxe compacte:
Remarque
L’opérateur ternaire est une expression qui fournit une valeur que l’on peut
utiliser dans une affectation ou un calcul.
FZ SALMAM CCN-S1(2023/2024) 35
35
Boucles
Boucles Tant Que (while)
FZ SALMAM CCN-S1(2023/2024) 36
36
18
12/10/2023
Boucles
Boucles Tant Que (while) /Exercice
Calculer la valeur de U5
i = 0
u = 1.0 # Initialisation de la suite u_n dans u, flottant
while (i < 5):
u = 2.0*u + 3.0 # Calcul de u_i par la formule de récurrence
i = i + 1 # Incrémentation de i
print("u_5 =", u)
FZ SALMAM CCN-S1(2023/2024) 37
37
Boucles
Boucles Pour (for)
La boucle for de Python permet en fait d’itérer sur n’importe quel objet
itérable. Or l’objet range(a,b) est itérable et «contient» les entiers de a à
b-1 inclus.
>>> for lettre in ”ciao”:
... print(lettre)
...
c
i
a
o
>>> for x in [2, ’a’, 3.14]:
... print(x)
...
2
a
3.14
>>> for i in range(3):
... print(i)
...
0
1
FZ SALMAM 2 CCN-S1(2023/2024) 38
38
19
12/10/2023
Ruptures de séquences
Interrompre une boucle : break
FZ SALMAM CCN-S1(2023/2024) 39
39
Ruptures de séquences
Court-circuiter une boucle : continue
FZ SALMAM CCN-S1(2023/2024) 40
40
20
12/10/2023
while x > 1:
if y % x == 0:
print(x, ”a pour facteur”, y)
break # voici l’interruption !
x -= 1
else :
print(y, ”est premier.”)
FZ SALMAM CCN-S1(2023/2024) 41
41
FZ SALMAM CCN-S1(2023/2024) 42
42
21
12/10/2023
Exercice
Constituez une liste semaine contenant les 7 jours de la semaine. Écrivez une
série d’instructions affichant les jours de la semaine (en utilisant une boucle
for), ainsi qu’une autre série d’instructions affichant les jours du week-end
(en utilisant une boucle while).
FZ SALMAM CCN-S1(2023/2024) 43
43
Exercice
*
**
***
****
*****
******
*******
********
*********
**********
FZ SALMAM CCN-S1(2023/2024) 44
44
22
12/10/2023
Partie II :
Types, affectations, expressions
Les instructions de contrôle
Les fonctions
FZ SALMAM CCN-S1(2023/2024) 45
45
Les fonctions
Fonctions/procédures
FZ SALMAM CCN-S1(2023/2024) 46
46
23
12/10/2023
Les fonctions
Fonctions/procédures
FZ SALMAM CCN-S1(2023/2024) 47
47
Les fonctions
Fonctions vs procédures en Algorithmique
FZ SALMAM CCN-S1(2023/2024) 48
48
24
12/10/2023
Les fonctions
Les fonctions en Python
Définition
Une fonction est un ensemble d’instructions regroupées sous un nom et
s’exécutant à la demande.
Syntaxe
La définition d’une fonction se compose :
• du mot clé def suivi de l’identificateur de la fonction, de
parenthèses entourant les paramètres de la fonction séparés par des
virgules, et du caractère « deux points » qui termine toujours une
instruction composée ;
• d’une chaîne de documentation (ou docstring) indentée comme
le corps de la fonction ;
• du bloc d’instructions indenté par rapport à la ligne de définition, et
qui constitue le corps de la fonction.
FZ SALMAM CCN-S1(2023/2024) 49
49
Les fonctions
Les fonctions en Python
addition(10, 5)
# Renvoie 15
addition(10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: addition() missing 1 required positional argument: 'b'
FZ SALMAM CCN-S1(2023/2024) 50
50
25
12/10/2023
Les fonctions
Passage des arguments
FZ SALMAM CCN-S1(2023/2024) 51
51
Les fonctions
Passage des arguments
FZ SALMAM CCN-S1(2023/2024) 52
52
26
12/10/2023
Les fonctions
Passage des arguments
def cube(x) :
”””Retourne le cube de largument.”””
return x**3
def volumeSphere(r) :
”””Retourne le volume d’une sphère de rayon <r> ;”””
return 4.0 * pi * cube(r) / 3.0
FZ SALMAM CCN-S1(2023/2024) 53
53
Les fonctions
Passage des arguments
def surfaceVolumeSphere(r) :
surf = 4.0 * math.pi * r**2
vol = surf * r/3
return surf, vol
# programme principal
rayon = float(input(’Rayon : ’))
s, v = surfaceVolumeSphere(rayon)
print(”Sphère de surface { :g} et de volume { :g}”.format(s, v))
FZ SALMAM CCN-S1(2023/2024) 54
54
27
12/10/2023
Les fonctions
Passage d’une fonction en paramètre
FZ SALMAM CCN-S1(2023/2024) 55
55
Les fonctions
Paramètres avec valeur par défaut
FZ SALMAM CCN-S1(2023/2024) 56
56
28
12/10/2023
Les fonctions
Nombre d’arguments arbitraire : passage d’un tuple de valeurs
def somme(*args) :
”””Renvoie la somme du tuple <args>.”””
resultat = 0
for nombre in args :
resultat += nombre
return resultat
# Exemples d’appel :
print(somme(23)) # 23
print(somme(23, 42, 13)) # 78
FZ SALMAM CCN-S1(2023/2024) 57
57
Les fonctions
Nombre d’arguments arbitraire : passage d’un dictionnaire
def unDict(**kwargs) :
return kwargs
# Exemples d’appels
## par des paramètres nommés :
print(unDict(a=23, b=42)) # {’a’ : 23, ’b’ : 42}
## en fournissant un dictionnaire :
mots = {’d’ : 85, ’e’ : 14, ’f’ :9}
print(unDict(**mots)) # {’d’ : 85, ’e’ : 14, ’f’ :9}
FZ SALMAM CCN-S1(2023/2024) 58
58
29
12/10/2023
Les fonctions
Portée des variables
Le bloc principal s'appelle le bloc global, les variables qui y sont définies sont
appelées 'variables globales' et visibles par la fonction globals(). Dans les bloc
secondaires, les variables déclarées sont locales et visibles en
utilisant locals().
a = 10 # variable globale
def f():
a = 20 # variable locale
print(a)
f()
print(a)
FZ SALMAM CCN-S1(2023/2024) 59
59
Les fonctions
Règles des 3 portées L, G et I
La recherche des noms est d’abord locale (L), puis globale (G), enfin interne
(I):
FZ SALMAM CCN-S1(2023/2024) 60
60
30
12/10/2023
Les fonctions
Règles des 3 portées L, G et I
x = 99
print(fonc(1)) # 102
print(x) # 101
FZ SALMAM CCN-S1(2023/2024) 61
61
31