Vous êtes sur la page 1sur 51

Introduction à la Programmation

Part 5: Principaux types de données


String (2)

Pr. A. BENAISSA
ali.benaissa.gry@gmail.com

04/11/22 1
Plan

• Introduction
• Le type String
• Accès aux caractères
• Opérations élémentaires
• Recherche
• Conclusion

04/11/22 2
Plan

• Introduction
• Le type String
• Accès aux caractères
• Opérations élémentaires
• Recherche
• Conclusion

04/11/22 3
Introduction

• Rien : None
• Booléens : Boolean
• Données numériques :
– Entiers : Integer
– Réels : Float

04/11/22 4
Introduction

• Possibilité de manipuler :
– Caractères alphanumériques
– Mots
– Phrases
– Suites de symboles

• Données alphanumériques:
– Chaines de caractères : String

04/11/22 5
Plan

• Introduction
• Le type String
• Accès aux caractères
• Opérations élémentaires
• Recherche
• Conclusion

04/11/22 6
Le type String

• Suite quelconque de caractères


• En python, suite délimitée par
– Apostrophes (simple quotes)
– Guillements (double quotes)

• Exemple :
phrs1 = ‘le vent se lève !... ’ phrs2 = ‘’Il faut tenter de
vivre!’’ phrs3 = ‘’Le cimetièremarin’

04/11/22 7
Le type String

• Possibilité de mettre des guillemets dans une chaine de


caractères

• Utiliser alors l’apostrophe pour délimiter

• Exemple :
phrs1 = ' "Le vent se lève !... Il faut tenter de vivre !" '
phrs2 = 'est un vers de Paul Valéry dans le cimetière marin. '
print(phrs1, phrs2)

>>> "Le vent se lève !... Il faut tenter de vivre !" est un versde
Paul Valéry dans le cimetière marin.

04/11/22 8
Le type String

• Possibilité de mettre des apostrophes dans une chaine de


caractères

• Utiliser alors les guillemets pour délimiter

• Exemple :
phrs1 = " 'Le vent se lève !... Il faut tenter de vivre !' "
phrs2 = 'est un vers de Paul Valéry dans le cimetière marin.'
print(phrs1, phrs2)

>>> 'Le vent se lève !... Il faut tenter de vivre !' est un versde
Paul Valéry dans le cimetière marin.

04/11/22 9
Le type String

>>> "L'airimmense ouvre et referme mon livre,


La vague en poudre osejaillir des rocs!"

• Comment écrire « L’air » sans refermer la chaine de


caractères ?
phrs = ' "L\'air immense ouvre et referme mon livre,’
print(phrs)

• Comment retourner à la ligne ?


phrs = ' "L\'air immense ouvre et referme mon livre,\n La vague
en poudre ose jaillir des rocs!" '
print(phrs)

04/11/22 10
Le type String

• Antislash à l’intérieur d’une chaine de


caractères, permet d’afficher certains
caractères spéciaux :
– Guillemets : \"
– Apostrophes : \'
– Retours à la ligne : \n
– Etc.

04/11/22 11
Le type String
Exercice 1

• Que contient la chaine de caractères p si le code


print(p) affiche dans le Shell :

>>> Une autre strophe du cimetière marin :


"Zénon! Cruel Zénon! Zénond'Élée!
M'as-‐tu percé de ceYe flècheailée qui
vibre, vole et ne volepas!
Le son m'enfante et la flèche metue!"
04/11/22 12
Le type String
Exercice 1

• Que contient la chaine de caractères p si le


code print(p) affiche dans le Shell :

p = 'Une autre strophe du cimetière marin : \n


"Zénon! Cruel Zénon! Zénon d\'Élée ! \n M\'as-‐ tu
percé de ceYe flèche ailée \n qui vibre, voleet ne
vole pas ! \n Le son m\'enfante et la flèche me
tue !" '
04/11/22 13
Le type String

• Autre solution : triple apostrophes (ou triple


guillemets)

p = '''Une autre strophe du cimetière marin :


"Zénon! Cruel Zénon! Zénon d'Élée!
M'as-‐tu percé de ceYe flèche ailée
qui vibre, vole et ne vole pas!
Le son m'enfante et la flèche me tue!" '''

04/11/22 14
Plan

• Introduction
• Le type String
• Accès aux caractères
• Opérations élémentaires
• Recherche
• Conclusion

04/11/22 15
Accès aux caractères

• Donnée composite : entité composée d’éléments


plus simples

• Exemple :
– Les chaines de caractères sont des données
composites.
– Elles sont composées d’entités plus petites : les
caractères.
– Comment accéder aux caractères ?

04/11/22 16
Accès aux caractères

• Chaine de caractères = séquence de caractères


• Chaque caractère a une place dans la séquence
• Cette place s’appelle indice (index)
• Numéroté à partir de 0 !!!

• 0 1 2 3 4 5 6
B o n j o u r

04/11/22 17
Accès aux caractères

0 1 2 3 4 5 6
B o n j o u r

• nomVar[i] permet d’accéder au caractère d’indice i dans la


chaine de caractères que contient la variable nomVar.

• Exemple :
ch = "Bonjour "
print(ch[0], ch[2], ch[4], ch[6])

>>> B n or

04/11/22 18
Accès aux caractères
Exercice 2
• Qu’affiche le programme ci-‐dessous?

ch = "Ce toit tranquille, où marchent des


colombes,"
print(ch[1], ch[2], ch[18], ch[21], ch[5], ch[43])

04/11/22 19
Accès aux caractères
Exercice 2
• Qu’affiche le programme ci-‐dessous?

ch = "Ce toit tranquille, où marchent des


colombes,"
print(ch[1], ch[2], ch[18], ch[21], ch[5], ch[43])

e ,ùis

04/11/22 20
Plan

• Introduction
• Le type String
• Accès aux caractères
• Opérations élémentaires
• Recherche
• Conclusion

04/11/22 21
Opérations élémentaires

• Concaténation : opérateurs + et +=

• Exemples :

ch = "a" + "bc"
print(ch) >>> "abc"

ch= "a"
ch += "bc"
print(ch) >>> "abc"

04/11/22 22
Opérations élémentaires

• len(nomVar) -> retourne la longueur de la chaine (i.e. le nombre de


caractères)
0 1 2 3 4 5 6
B o n j o u r

• Exemple :
a ="Bonjour"
print(len(a)) >>> 7

• Remarque :
Tous les caractères ont un indice inférieur à la longueur de la chaine.
a = "Bonjour"
print(a[15]) >>> IndexError: string index out of range

04/11/22 23
Opérations élémentaires
Exercice 3

• Que retourne a[len(a)-1] avec a="Bonjour" ?

• Que retourne a[len(a)- 1] en général ?

04/11/22 24
Opérations élémentaires
Exercice 3

• Que retourne a[len(a)-1] avec a="Bonjour" ?

• Que retourne a[len(a)-1] en général ?

La dernière lettre de la chaine.


04/11/22 25
Opérations élémentaires
Exercice 4

• Ecrivez un programme qui affiche tous les caractères


d’indice pair dans une chaine de caractères.

04/11/22 26
Opérations élémentaires
Exercice 4

• Ecrivez un programme qui affiche tous les caractères


d’indice pair dans une chaine de caractères.

i=0
while(i<len(ch)):
print(ch[i]) i
+= 2

04/11/22 27
Opérations élémentaires
Exercice 5

• Ecrivez un programme qui recopie une chaine (dans


une nouvelle variable) en l’inversant. Par exemple,
"vent" deviendra"tnev".

04/11/22 28
Opérations élémentaires
Exercice 5

• Ecrivez un programme qui recopie une chaine (dans une


nouvelle variable) en l’inversant. Par exemple, "vent"
deviendra"tnev".

a, b = "vent", ""
I = len(a) – 1
while(i>-1):
b += a[i]
I -= 1

04/11/22 29
Plan

• Introduction
• Le type String
• Accès aux caractères
• Opérations élémentaires
• Recherche
• Conclusion

04/11/22 30
Recherche

• Comment rechercher un élément dans une


chaine de caractères ?
• Utiliser un drapeau (flag)
• Un drapeau est une variable booléenne initialisée
à False
• Elle passe à True dans la boucle si l’élément est
trouvé
• Elle fait parti de la condition d’arrêt de la boucle

04/11/22 31
Recherche

• Exemple : programme qui affiche


>>> Trouvé
si la chaine de caractères c contient le caractère ‘’e’’.

i=0
trouve = False
while(i<len(c) and nottrouve):
if(c[i] == "e"):
print("Trouvé") trouve =
True
i += 1

04/11/22 32
Recherche
• Traces d’exécution de ce programme avec "vent"

Ligne i c trouve >>>


1. i=0
1 0
2. c= "vent"
3. trouve = False
4. while(i<len(c) and nottrouve):
5. if(c[i] == "e"):
6. print("Trouvé")
7. trouve = True
8. i += 1

04/11/22 33
Recherche
• Traces d’exécution de ce programme avec "vent"

Ligne i c trouve >>>


1. i=0
1 0
2 0 vent 2. c= "vent"
3. trouve = False
4. while(i<len(c) and nottrouve):
5. if(c[i] == "e"):
6. print("Trouvé")
7. trouve = True
8. i += 1

04/11/22 34
Recherche
• Traces d’exécution de ce programme avec "vent"

Ligne i c trouve >>>


1. i=0
1 0
2 0 vent 2. c= "vent"
3 0 vent False 3. trouve = False
4. while(i<len(c) and nottrouve):
5. if(c[i] == "e"):
6. print("Trouvé")
7. trouve = True
8. i += 1

04/11/22 35
Recherche
• Traces d’exécution de ce programme avec "vent"

Ligne i c trouve >>>


1. i=0
1 0
2 0 vent 2. c= "vent"
3 0 vent False 3. trouve = False
4 0 vent False 4. while(i<len(c) and nottrouve):
5. if(c[i] == "e"):
6. print("Trouvé")
7. trouve = True
8. i += 1

04/11/22 36
Recherche
• Traces d’exécution de ce programme avec "vent"

Ligne i c trouve >>>


1. i=0
1 0
2 0 vent 2. c= "vent"
3 0 vent False 3. trouve = False
4 0 vent False 4. while(i<len(c) and nottrouve):
5 0 vent False 5. if(c[i] == "e"):
6. print("Trouvé")
7. trouve = True
8. i += 1

04/11/22 37
Recherche
• Traces d’exécution de ce programme avec "vent"

Ligne i c trouve >>>


1. i=0
1 0
2 0 vent 2. c= "vent"
3 0 vent False 3. trouve = False
4 0 vent False 4. while(i<len(c) and nottrouve):
5 0 vent False 5. if(c[i] == "e"):
8 1 vent False 6. print("Trouvé")
7. trouve = True
8. i += 1

04/11/22 38
Recherche
• Traces d’exécution de ce programme avec "vent"

Ligne i c trouve >>>


1. i=0
1 0
2 0 vent 2. c= "vent"
3 0 vent False 3. trouve = False
4 0 vent False 4. while(i<len(c) and nottrouve):
5 0 vent False 5. if(c[i] == "e"):
8 1 vent False 6. print("Trouvé")
4 1 vent False 7. trouve = True
8. i += 1

04/11/22 39
Recherche
• Traces d’exécution de ce programme avec "vent"

Ligne i c trouve >>>


1. i=0
1 0
2 0 vent 2. c= "vent"
3 0 vent False 3. trouve = False
4 0 vent False 4. while(i<len(c) and nottrouve):
5 0 vent False 5. if(c[i] == "e"):
8 1 vent False 6. print("Trouvé")
4 1 vent False 7. trouve = True
5 1 vent False 8. i += 1

04/11/22 40
Recherche
• Traces d’exécution de ce programme avec "vent"

Ligne i c trouve >>>


1. i=0
1 0
2 0 vent 2. c= "vent"
3 0 vent False 3. trouve = False
4 0 vent False 4. while(i<len(c) and nottrouve):
5 0 vent False 5. if(c[i] == "e"):
8 1 vent False 6. print("Trouvé")
4 1 vent False 7. trouve = True
5 1 vent False 8. i += 1
6 1 vent False Trouvé

04/11/22 41
Recherche
• Traces d’exécution de ce programme avec "vent"

Ligne i c trouve >>>


1. i=0
1 0
2 0 vent 2. c= "vent"
3 0 vent False 3. trouve = False
4 0 vent False 4. while(i<len(c) and nottrouve):
5 0 vent False 5. if(c[i] == "e"):
8 1 vent False 6. print("Trouvé")
4 1 vent False 7. trouve = True
5 1 vent False 8. i += 1
6 1 vent False Trouvé
7 1 vent True

04/11/22 42
Recherche
• Traces d’exécution de ce programme avec "vent"

Ligne i c trouve >>>


1. i=0
1 0
2 0 vent 2. c= "vent"
3 0 vent False 3. trouve = False
4 0 vent False 4. while(i<len(c) and nottrouve):
5 0 vent False 5. if(c[i] == "e"):
8 1 vent False 6. print("Trouvé")
4 1 vent False 7. trouve = True
5 1 vent False 8. i += 1
6 1 vent False Trouvé
7 1 vent True
8 2 vent True

04/11/22 43
Recherche
• Traces d’exécution de ce programme avec "vent"

Ligne i c trouve >>>


1. i=0
1 0
2 0 vent 2. c= "vent"
3 0 vent False 3. trouve = False
4 0 vent False 4. while(i<len(c) and nottrouve):
5 0 vent False 5. if(c[i] == "e"):
8 1 vent False 6. print("Trouvé")
4 1 vent False 7. trouve = True
5 1 vent False 8. i += 1
6 1 vent False Trouvé
7 1 vent True
8 2 vent True
4 2 vent True

04/11/22 44
Recherche
• Traces d’exécution de ce programme avec "vent"

Ligne i c trouve >>>


1. i=0
1 0
2 0 vent 2. c= "vent"
3 0 vent False 3. trouve = False
4 0 vent False 4. while(i<len(c) and nottrouve):
5 0 vent False 5. if(c[i] == "e"):
8 1 vent False 6. print("Trouvé")
4 1 vent False 7. trouve = True
5 1 vent False 8. i += 1
6 1 vent False Trouvé
7 1 vent True
8 2 vent True
4 2 vent True
9

04/11/22 45
Recherche
Exercice 6
• Donnez la trace d’exécution de ce programme

1. i=0
2. c= "cheval"
3. trouve = False
4. while(i<len(c) and nottrouve):
5. if(c[i] == "e"):
6. print("Trouvé")
7. trouve = True
8. i += 1

04/11/22 46
Recherche
Exercice 6
• Donnez la trace d’exécution de ce programme

Ligne i c trouve >>>

1 0 1. i=0
2 0 cheval 2. c= "cheval"
3 0 cheval False
4 0 cheval False
3. trouve = False
5 0 cheval False 4. while(i<len(c) and nottrouve):
8 1 cheval False 5. if(c[i] == "e"):
4 1 cheval False 6. print("Trouvé")
5 1 cheval False
8 2 cheval False
7. trouve = True
4 2 cheval False 8. i += 1
5 2 cheval False
6 2 cheval False Trouvé
7 2 cheval True
8 3 cheval True
4 3 cheval True
9

04/11/22 47
Recherche
Exercice 7

• Ecrivez un programme qui affiche


>>> Trouvé
si une chaine de caractères c contient la séquence de caractères ‘’er’’.

04/11/22 48
Recherche
Exercice 7

• Ecrivez un programme qui affiche


>>> Trouvé
si une chaine de caractères c contient la séquence de caractères ‘’er’’.

i=1
trouve = False
while ( i<len(c) and not trouve ) :
if(c[i-1] == “e”and c[i] == "r"):
print("Trouvé") trouve =
True
i += 1

04/11/22 49
Plan

• Introduction
• Le type String
• Accès aux caractères
• Opérations élémentaires
• Recherche
• Conclusion

04/11/22 50
Conclusion

Valeur Shell Anglais Français

type(None) <class ‘NoneType’> None Rien


type(3) <class ‘int’> Integer Entier
type(3.2) <class ‘float’> Float Réel
type(False) <class ‘bool’> Boolean Booléen
type(‘’Bonjour’’) <class ‘str’> String Chaine de
caractères

04/11/22 51

Vous aimerez peut-être aussi