Types de variables
Contents
Types de variables#
Nous allons maintenant décrire quelques uns des types de variables les plus utilisés en Python et dont nous aurons besoin durant ce cours:
entiers: ce sont les nombres entiers avec un signe (ex: 0, -1, 42)
floats: ce sont les nombres décimaux avex un signe (ex: 0.0, -1.96, 42e9). Ces nombres ne sont pas représentés exactement (i.e. avec toutes leurs décimales) et sont souvent arrondis lorsqu’ils sont représentés.
booléens: ce sont des variables
True
ouFalse
, très utiles lors des tests avecif
(voir Section \ref{sec:ifelifelse}).strings: ce sont des chaines de caractères définies par des guillemets (ex:
"bonjour"
).listes: ce sont des tableaux de valeurs (voir Section Listes).
dictionaries: ce sont des listes dont les indices ne sont pas des nombres mais des variables comme des chaines de caractères (voir Section Dictionnaires)
Listes#
Un type de variable particulièrement utile en Python est la liste qui est équivalente au tableau (“array”) présent dans d’autres langages de programmation. Une liste sert à contenir une liste de valeurs ou de variables.
radii = [0.9,1.0,0.95,1.1,1.2,1.0,0.8,0.85,1.05,1.0]
La présence de crochets entourant des valeurs séparées par des virgules est interprété par Python comme la construction d’une liste, cette liste étant ensuite assignée à la variable \pyv{radii}.
Cette liste est ordonnée au sens où l’on peut récupérer des valeurs particulières de cette liste en utilisant le numéro de l’élément.
print(“Premiere valeur:”,radii[0]) print(“Troisieme valeur:”,radii[2])
Comme beaucoup de langages de programmation, Python définit le premier élément d’une liste par l’index 0.
Par conséquent, si une liste a n
éléments, on pourra récupérer le dernier élément de cette liste avec l’index n-1
.
Si en revanche on essaye de récupérer l’index n
ou plus, on va obtenir une erreur.
print(radii[10])
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
Cell In[2], line 1
----> 1 print(radii[10])
IndexError: list index out of range
Cette erreur indique que l’index donné est en dehors de la “range” (portée) de la liste.
Il est toujours possible de récupérer la taille d’une liste en utilisant la fonction len()
.
ma_liste = [1, 2, 3, 4]
print("Ma liste a", len(ma_liste), "elements.")
Ma liste a 4 elements.
Exercise 10
Si on se donne une liste avec un nombre d’éléments inconnus, comment récupérer l’avant-dernier élément?
Solution to Exercise 10
Puisque l’index du dernier élément de maliste
est len(maliste)-1
, on peut récupérer l’avant-dernier élément avec:
maliste = [1, 2, 3, 4]
maliste[len(maliste)-2]
Un certain nombre de fonctions a été défini afin de simplifier la manipulation de listes. L’exemple ci-dessous contient quelques unes de ces fonctions; testez les une par une afin de comprendre leur fonctionnement.
array=[1,2,3,4,5,6]
array.append(7)
print("La liste est maintenant:",array)
array.pop(5)
print("La liste est maintenant:",array)
array.pop()
print("La liste est maintenant:",array)
array.insert(3,9)
print("La liste est maintenant:",array)
La liste est maintenant: [1, 2, 3, 4, 5, 6, 7]
La liste est maintenant: [1, 2, 3, 4, 5, 7]
La liste est maintenant: [1, 2, 3, 4, 5]
La liste est maintenant: [1, 2, 3, 9, 4, 5]
D’autres fonctions permettent d’inverser l’ordre des éléments d’une liste ou de trier leur contenu.
#Inverser l'ordre des elements de la liste
array.reverse()
print("La liste est maintenant:",array)
#Trier la liste
array.sort()
print("La liste est maintenant:",array)
#Creer une sous-liste a partir d'une liste
subarray=array[2:4]
print("La sous-liste est:",subarray)
La liste est maintenant: [5, 4, 9, 3, 2, 1]
La liste est maintenant: [1, 2, 3, 4, 5, 9]
La sous-liste est: [3, 4]
Un point très important est qu’une liste peut contenir différents types de variables simultanément.
petiteliste = [1, 2, 3]
listemixte = ["pomme", 3, petiteliste]
print("Contenu de listemixte:",listemixte)
Contenu de listemixte: ['pomme', 3, [1, 2, 3]]
Dictionnaires#
Comme expliqué plus haut, les dictionnaires sont similaires à des listes mais dont les indices ne sont pas forcément des entiers. En effet, chaque entrée d’un dictionnaire est composée d’une clé et d’une valeur. Cette organisation permet de contenir plus d’information, puisque chaque valeur possède une clé. On accède donc aux éléments du dictionnaire piur consulter l’élément ou bien le modifier grâce à cette clé.
dictionaire = {"mario": 1.50, "luigi": 1.80}
print("Dictionaire:", dictionaire)
dictionaire["luigi"] = 1.78 # correction de la taille de luigi
dictionaire["peach"] = 1.60 # ajout d'une nouvelle taille
print("Dictionaire à jour:", dictionaire)
print("Taille de Luigi:",dictionaire["luigi"])
Dictionaire: {'mario': 1.5, 'luigi': 1.8}
Dictionaire à jour: {'mario': 1.5, 'luigi': 1.78, 'peach': 1.6}
Taille de Luigi: 1.78
Comme ce ne sont pas des listes et donc on ne connait pas à priori les indices de celui-ci, on utilise la fonction keys()
pour l’obtenir.
dictionaire = {'mario': 1.5, 'luigi': 1.78, 'peach': 1.6}
print("Cles:",dictionaire.keys())
Cles: dict_keys(['mario', 'luigi', 'peach'])
La méthode update()
permet de mettre à jour un dictionaire: si les clés données en argument de la méthode sont déjà présents dans le dictionaire, les valeurs associées seront mises à jour; sinon elles seront ajoutées au dictionnaire.
prix = {"peche": 1.90, "courgette": 2.10}
print("Prix:",prix)
# Mise a jour des prix
mis_a_jour = {"peche": 20.5, "chips": 1.10}
prix.update(mis_a_jour)
print("Nouveaux prix:",prix)
Prix: {'peche': 1.9, 'courgette': 2.1}
Nouveaux prix: {'peche': 20.5, 'courgette': 2.1, 'chips': 1.1}
Par construction du dictionnaire, il est donc impossible d’avoir deux clés identiques dans un dictionnaire et de la même façon qu’une liste, si on essaye de récupérer une clé qui n’est pas dans le dictionnaire, on va obtenir une erreur.
prix = {"peche": 2.05, "courgette": 2.10, "chips": 1.10}
print(prix["pomme"])
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Cell In[10], line 2
1 prix = {"peche": 2.05, "courgette": 2.10, "chips": 1.10}
----> 2 print(prix["pomme"])
KeyError: 'pomme'