Vous êtes sur la page 1sur 9

07/03/2024

Université Cadi Ayyad


Marrakech

Initiation à la
programmation
avec Python Ecole Nationale des
sciences appliquées

Chapitre n° 5 : Les tuples


et chaines de caractères Année scolaire 2022/2023
(Séquences immuables)
2ème Semestre
Niveau : CP1

Pr. Abdelhak KADDRI

Plan du chapitre 5
V- Les tuples et chaines de caractères
(Séquences immuables)
1) Les tuples
a) Définition et déclaration
b) Opérations sur les tuples
c) Exemples d’application
2) Chaines de caractères comme objet
a) Méthodes et exemples d’application
b) Formatage des Chaines de caractères
c) Listes et chaines de caractères

1
07/03/2024

Introduction
▪ Rappelez-vous d’une différence majore
entre des listes et des chaines de ▪ La seule possibilité d’arriver à notre but
caractères, pour une liste on peut écrire : est d’écraser notre chaîne, et d’y recopier
>>> liste ce que nous voulons changer :
=['jambon','fromage','miel','confiture','chocolat']
>>> chaine = chaine[:-4] +’thé'
>>> liste[1:3] =['salade']
>>> print(chaine)
>>> print(liste)
['jambon', 'salade', 'confiture', 'chocolat’] ‘Ali préfère le thé'
▪ Mais pour une chaine de caractères : ▪ Python propose un type de données
>>> chaine =‘Ali préfère le café'
>>> chaine[-4:] =‘thé' appelé tuple, qui est assez semblable à
****==> Erreur: object doesn't support slice une liste mais qui, comme les chaînes,
assignment ***
n’est pas modifiable (immuable).
Nous essayons de modifier la fin de la chaîne de
caractères, mais cela ne marche pas.

Les tuples
Définition et déclaration Exemples de déclaration :
>>> t1 = (1,4,"toto")
▪ Le type tuple est un type de données >>> t2 = 42,"pi",11.78,"Python"
>>> t3 = () #tuple vide
qui fonctionne exactement comme une
>>> t4 = ("un seul élément",)
liste, mais : #un tuple avec un seul élt suivi de ,
>>> t = 2, 'deux', 2.0, True, (1, 2, 3, 4)
▪ Avec des parenthèses à la place des >>> t
(2, 'deux', 2.0, True, (1, 2, 3, 4))
crochets, voir même sans mettre de
>>> t, type(t), len(t)
parenthèses. ((2, 'deux', 2.0, True, (1, 2, 3, 4)), <type 'tuple'>, 5)
>>> t[1]
▪ N'est pas modifiable : le type tuple 'deux'
>>> t[-1]
est immutable.
(1, 2, 3, 4)

2
07/03/2024

Les tuples
Opérations sur les tuples
▪ Les opérations que l’on peut effectuer sur des tuples sont syntaxiquement similaires à celles
que l’on effectue sur les listes, si ce n’est que les tuples ne sont pas modifiables.

myTuple[indice] désignation l'élément de rang indice de tuple (indice=0,1,2,…

myTuple[indice] = expression Non permise,

tuple1 + tuple2 concaténation (mise bout-à-bout) de deux tuples,

permet de « multiplier » un tuple par un entier, ce qui a pour effet de


myTuple* n
dupliquer son contenu n fois.

element in myTuple test d'appartenance de element dans mon tuple

for element in myTuple : parcours séquentiel de mon tuple

Les tuples
Exemples d’application

Exemple 1: Exemple 2 : Exemple 3 :


>>> point = 3, 4 >>> tup = ('a', 'b', 'c', 'd', 'e') >>> tu1, tu2 = ("a","b"),
("c","d","e")
>>> point >>> print(tup[2:4]) >>> tu3 = tu1*4 + tu2
(3, 4) ('c', 'd') >>> tu3
('a', 'b', 'a', 'b', 'a', 'b', 'a', 'b', 'c', 'd',
>>> x, y = point >>> tup[1:3] = ('x', 'y’)
'e')
>>> x ***** erreur ! ***** >>> for e in tu3:
>>> tup = (‘Ali',) + tup[1:] ... print(e, end=":")
3
a:b:a:b:a:b:a:b:c:d:e:
>>> print(tup)
>>> y >>> del tu3[2]
(‘Ali', 'b', 'c', 'd', ‘e’) TypeError: 'tuple' object doesn't
4
support item deletion

3
07/03/2024

Les tuples
Autres applications : ▪ Sequence packing et unpacking :
▪ Utilisation des méthodes de ▪ sequence packing : t = x, y, z
l’objet liste qui ne réagissent
▪ sequence unpacking : x, y, z = t
pas sur le tuple :
>>> tup = ('a', 'b', ‘a', ‘b', ‘b') # t doit avoir 3 éléments dans ce cas.
>>> tup.index(‘b’)
1 ▪ on peut faire aussi x, y, z = 1, 2, 3
>>> tup.count(‘b’)
3 c’est une affectation parallèle des
>>> tup.sort(‘b’) valeurs à x, y et z simultanément.
AttributeError: 'tuple' object has no
attribute 'sort' ▪ Donc, pour échanger les valeurs de
>>> tup.remove(‘b’) deux variables a et b on écrit :
AttributeError: 'tuple' object has no
attribute ‘remove' a,b=b,a

Plan du chapitre 5
V- Les tuples et chaines de caractères
(Séquences immuables)
1) Les tuples
a) Définition et déclaration
b) Opérations sur les tuples
c) Exemples d’application
2) Chaines de caractères comme objet
a) Méthodes et exemples d’application
b) Formatage des Chaines de caractères
c) Listes et chaines de caractères

4
07/03/2024

Chaines de caractères comme objet


split
▪ Sous Python, les chaînes de caractères
join
sont des objets. On peut donc effectuer
find
de nombreux traitements sur les
chaînes de caractères en utilisant des count
index
méthodes appropriées.
upper/lower
▪ Notez bien que les chaines de str title
caractères sont immuables, donc format
capitalize
toutes les méthodes sur le type str
n’agissent pas sur l’objet il même. wapcase

strip

replace

Méthodes et exemples d’application


▪ lower() : convertit une chaine en minuscules
▪ find(sch) : cherche la position d’une sous-chaîne sch
>>> ch = "ADAM est un prenom ancien "
dans la chaîne, elle renvoie -1 si pas trouvée.
>>> ch1 = "Cette leçon vaut bien un fromage, sans doute ?" >>> ch.lower()
>>> ch2 = "fromage" ‘adam est un ancien prenom’
>>> ch1.find(ch2) >>> ch # la chaine initiale reste sans changement
25 ‘ADAM est un ancien prenom’
▪ count(sch) : compte le nombre de sous-chaines sch ▪ upper() : convertit une chaine en
dans la chaine, elle renvoie le nbr d’occurrences. majuscules
>>> ch1 = "Le heron au long bec emmanche d'un long cou" >>> ch = " le Langage python"
>>> ch.upper()
>>> ch2 = 'long' ‘LE LANGAGE PYTHON’
>>> ch1.count(ch2)
▪ title() : convertit en majuscule l’initiale de
2 chaque mot :
>>> ch ="programmation orientée objet"
>>> ch.title()
‘Programmation Orientée Objet’

10

5
07/03/2024

Méthodes et exemples d’application


▪ capitalize() : variante de la précédente. Convertit ▪ replace(c1, c2) : remplace tous les
en majuscule seulement la première lettre de la caractères c1 par des caractères c2
chaine dans la chaine
>>> ch = "quel beau temps, aujourd’hui !" >>> ch= "Si ce n'est toi c'est donc ton frère"
>>> ch.capitalize() >>> ch.replace(" t","m"))
‘Quel beau temps, aujourd’hui !’ ‘Si ce n'esm moi c'esm donc mon frère’
▪ swapcase() : convertit toutes les majuscules en ▪ index(car,pos) : retrouve l’indice
minuscules, et vice-versa : (index) de la première occurrence du
>>> ch = "nom ET pRENOM" caractère car à partir de la position
pos dans la chaine :
>>> ch.swapcase()
>>> ch="Je cherche l’indice de o ici"
'NOM et Prenom’
▪ strip() : enlevé les espaces éventuels au début et à
>>> ch.index("o"))#pos ici est=0
la fin de la chaine 23
>>> ch = " Monty Python " ▪ Quelques méthodes booléennes
>>> ch.strip() usuelles sur le type str :
'Monty Python' isupper, , islower, isdigit, isalpha, isalnum,
isascii, isspace, isprintable, isnumeric

11

Chaines de caractères comme objet


Exercice d’application n°1
#suite de solution
▪ Réaliser un script qui : n=ch.count(car)
1. Demande une phrase puis un caractère à
if n :
l’utilisateur.
2. Il vérifier est-ce un caractère alphanumérique ou print("Le caractère",car," apparait ",n," fois")
non ? else:
3. Ensuite, il affiche le nombre d’occurrences de ce print("Le caractère",car," n'existe pas dans la
caractère dans la phrase s’il existe, sinon : le
caractère n’existe pas. phrase")
4. Enfin, il affiche toutes ses positions dans la phrase. i=0#maintenant l’affichage de ses positions dans la
chaine
▪ Solution :
if n :
ch =input("Donner une phrase :")
p=-1
car=input("Donner un caractère :")
while i<n:
if car.isalnum() : p+=1
print("C'est un caractère alphanumérique") p=ch.index(car,p)
else: print(car,"apparait à la position ",p)
print("Ce n'est pas un caractère alphanumérique") i+=1

12

6
07/03/2024

Formatage des Chaines de caractères


▪ format (): permet de construire une chaine
de caractères complexe à partir d’un certain Avec la méthode format :
nombre de morceaux, tels que les valeurs de Tout d’abord on construit une chaine appelée
variables diverses. patron comme suivante :
Par exemple , soient les deux variables suivantes : >>> ch="La solution est devenue {}, et sa
>>> coul ="verte" température atteint {} °C"
>>> temp =1.347 + 15.9 Dans laquelle on a mis les balises {} dans les
Vous souhaitez à présent construire une chaîne de positions des variables à remplacer.
caractères telle que la suivante : « La solution est Ensuite on utilise la fonction format comme
devenue verte, et sa température atteint suivant :
17,247 °C ».
>>>ch.format(coul,temp) #avec deux paramètres ici
Sans utilisation de la méthode format :
>>> ch="La solution est devenue "+coul+", et sa ‘La solution est devenue verte, et sa
température atteint "+str(temp)+" °C" température atteint 17,247 °C’

13

Formatage des Chaines de caractères


▪ Maintenant, on va utiliser l’option {valeur:formatage} pour
▪ Avec la même méthode format (): vous pouvez améliorer la
améliorer l’affichage :
présentation d’une chaine, par exemples :

▪ en limitant la précision du résultat final, >>> ch ="L’aire d’un disque de rayon {} est égale à {:5.2f}."
▪ en utilisant une notation scientifique, >>>ch.format(r,r**2*pi)
▪ en fixant le nombre total de caractères, etc. "L’aire d’un disque de rayon 4.7 est égale à 46.39."
Pour illustration, nous allons calculer et afficher l’aire d’un disque par les
commandes suivantes :
▪ Dans cet exemple :

>>> pi =3.1416 • valeur : est la valeur que nous voulons formater (dans

>>> r =4.7 notre cas c’est la valeur de r**2*pi)

>>> ch ="L’aire d’un disque de rayon {} est égale à {}." •formatage : 5 signifie le nombre de caractères (chiffres et

>>>ch.format(r,pi**2*r) virgule), 2 est le nombre après la virgule et f signifie


"L’aire d’un disque de rayon 4.7 est égale à 46.387357632000004" nombre float.

>>>print(f"L’aire d’un disque de rayon {r} est égale à {r**2*pi}.") On peut écrire avec print(f" ") :
>>>print(f"L’aire d’un disque de rayon {r} est égale à {r**2*pi:5.2f}." )
"L’aire d’un disque de rayon 4.7 est égale à 46.387357632000004"

14

7
07/03/2024

Chaines de caractères comme objet


Exercice d’application n°2
▪ Réaliser un script qui : ▪ Solution :
car=input("Donner un nombre entier positif :")
1. Demande un entier positif n à l’utilisateur.
if car.isnumeric() :#si entier positif
2. Puis il vérifier est-ce un nombre entier
positif ou non, car=int(car) #convertion en valeur entière
ch="Le nombre {:d} (décimal) vaut {:x} en
3. Si oui, affiche une phrase telle que : hexadécimal et {:b} en binaire« #patron
Le nombre 65 (décimal) vaut 41 en hexadécimal et 1000001 en
print(ch.format(car,car,car))#affichage
binaire
# ou print(f"Le nombre {car:d} (décimal) vaut {car:x}
Pour n=65, sachant que les options de formatage en hexadécimal et {car:b} en binaire")
pour cet exemple sont :
else:
d pour décimal, x pour hexadécimal et b pour
print("Désolé!!!!",car," n'est pas un nombre entier
binaire dans la balise {}. positif")

15

Listes et chaines de caractères :


 Exemples :
▪ Convertir une chaine en une liste en utilisant la
>>> ch=“ bonjour à tous ici à l’ensa”
méthode split() sur le type str :
>>> liste=ch.split(" ")

liste=chaine.split(séparateur) >>> liste


['bonjour', 'à', 'tous', 'ici', 'à', 'l’ensa']
▪ Après la conversion de votre chaine on peut traiter la >>> liste[5] = [“l’ENSA”]
liste résultat. >>> liste[0] = [‘Bonjour’]
>>> liste
▪ Et inversement, on peut reconvertir la liste en une ['Bonjour', 'à', 'tous', 'ici', '', 'à', 'l’ENSA’]
chaine en utilisant la méthode join() sur le type str : >>> ch=“ “.join(liste)
>>> ch
chaine=" ".join(liste) 'Bonjour à tous ici à l’ENSA’
ch2="#".join(liste)
Ici " " l’espace est le caractère de jointure de la liste
>>> ch2
qu’on peut remplacer avec un autre selon nos besoins. 'Bonjour#à#tous#ici#à#l’ENSA'

16

8
07/03/2024

Listes et chaines de caractères :


Exercice d’application n°3
 Sans utilisation de la méthode title(), écrivez un script qui met le 1er caractère de
chaque mot dans une phrase en majuscule et son reste en minuscule.
 Solution
ch=input('Donner une chaine :')
l=ch.split(' ')#transformation de chaine en liste
i=0
for mot in l: #pour chaque mot de la liste construite
n_mot=mot[0].upper()+mot[1:].lower()#on reconstruit un nouveau mot
l[i]=n_mot#on remplace l'ancien avec le nouveau mot dans notre liste
i+=1#n'oublie pas d'incrémenter i parce qu'il est indépendant de for ici
ch=' '.join(l)# on reconstruit notre chaine à partir de la liste à jour
print(ch)

17

MERCI POUR VOTRE


ATTENTION

Fin du chapitre V

18

Vous aimerez peut-être aussi