Boucles, chaînes de caractères

Quelques outils sur les chaînes de caractères.

En python, les chaînes de caractères sont de type string (str).

In [1]:
c = 'hello'
type(c)
Out[1]:
str

On peut obtenir une des lettres de la chaîne :

In [2]:
c[0]
Out[2]:
'h'
In [3]:
c[4]
Out[3]:
'o'

La longueur (length en anglais) de la chaîne est :

In [4]:
len(c)
Out[4]:
5

On peut comparer deux chaînes :

In [5]:
'oui' == 'non'
Out[5]:
False
In [6]:
'oui' != 'Oui'
Out[6]:
True

Exercice 1

Ecrire un programme qui cherche si la lettre 't' est présente dans une chaîne entrée. Si oui, afficher "la lettre t est présente", si non...

In [7]:
chaine = input("Entrer un mot ou une phrase : ")
longueur_chaine = len(chaine)
i = 0

while i < longueur_chaine:
    if chaine[i] == 't':
        print("La lettre t est présente dans la chaîne entrée.")
    i = i+1
Entrer un mot ou une phrase : tgfgthjt
La lettre t est présente dans la chaîne entrée.
La lettre t est présente dans la chaîne entrée.
La lettre t est présente dans la chaîne entrée.

Les défauts du programme ci-dessus sont :

  • Même si un premier t est trouvé, on continue à en chercher un.
  • Si aucun t n'est trouvé, aucun message n'est affiché.

Amélioration :

In [8]:
chaine = input("Entrer un mot ou une phrase : ")
longueur_chaine = len(chaine)
i = 0
trouve = False

while (trouve == False) and (i < longueur_chaine):
    if chaine[i] == 't':
        print("La lettre t est présente dans la chaîne entrée.")
        trouve = True
    i = i+1
    
if trouve == False:
    print("La lettre t n'est pas présente dans la chaîne entrée.")
Entrer un mot ou une phrase : tghtthyt
La lettre t est présente dans la chaîne entrée.

Tests. On teste une chaîne sans t, une chaîne avec t au début, avec t à la fin, avec t vers le milieu.

Exercice 2

Ecrire un programme qui demande à l'utilisateur d'entrer "bonjour" et qui recommence jusqu'à ce que la saisie soit correcte.

In [9]:
entree = ""
while entree != "bonjour":
    entree = input("Entrez 'bonjour' : ")
Entrez 'bonjour' : dfetrhft
Entrez 'bonjour' : Bonjour
Entrez 'bonjour' : BONJOUR
Entrez 'bonjour' : bonj
Entrez 'bonjour' : bonjour

Exercice 3

Ecrire un programme qui renvoie VRAI si la chaîne entrée contient la suite de lettres 'ent' et FAUX sinon.

In [10]:
entree = input("Entrer un mot ou une phrase : ")
longueur_entree = len(entree)
retour = False
i = 0

while (i < longueur_entree-2) and (retour == False):
    if (entree[i] == 'e') and (entree[i+1] == 'n') and (entree[i+2] == 't'):
        retour = True
    i = i+1

print(retour)
Entrer un mot ou une phrase : cdsgghentf
True

Utilisation d'une fonction

Pour présenter les différents tests effectués, remplaçons le programme ci-dessus par une fonction :

In [11]:
def chaine_contient_ent(entree):
    longueur_entree = len(entree)
    retour = False
    i = 0
    
    while (i < longueur_entree-2) and (retour == False):
        if (entree[i] == 'e') and (entree[i+1] == 'n') and (entree[i+2] == 't'):
            retour = True
        i = i+1
    return retour
In [12]:
chaine_contient_ent("fglendsfterfze"), chaine_contient_ent("fdfentfterfze"), chaine_contient_ent("ent"), chaine_contient_ent("trident")
Out[12]:
(False, True, True, True)
In [ ]:
 
In [ ]:
 
In [ ]: