image accueil

boucle for, chaînes de caractères et tuples

Objectifs :

À la fin de cette séquence vous serez capable de :

  • Utiliser la boucle forpour parcourir une séquence (string, tuple)
  • Utiliser la boucle forpour répéter un morceau de programme
  • Utiliser la fonction range() pour créer une suite de nombres
  • Manipuler une séquence (string, tuple)
  • Écrire un algorithme de parcours séquentiel

1. Boucle for

Comme la boucle while, la boucle for permet de répéter un morceau de programme. Cependant, contrairement à while, for ne dépend pas d'une condition mais d'une suite ordonnée d'objets : le corps de la boucle for est répété, dans l'ordre, pour chaque élément de la série.

1.1. Mise en œuvre de la boucle for

In [ ]:
mot = input("Écrire un mot : ")
print(f"\nVoici les différentes lettres de {mot}")
for lettre in mot:
    print(lettre)

Analyse de la boucle for :
Une séquence est une collection d'éléments ordonnés. Dans le cas d'un mot, les éléments sont des lettres.
La boucle for utilise une variable (lettre) pour identifier chaque lettre de mot puis, dans cet exemple, l'affiche. Ensuite, récupère la deuxième lettre puis l'affiche... jusqu'à épuisement des lettres de mot.

1.2. Compter à l'aide de la boucle for : la fonction range()

In [ ]:
print("Compter de 0 à 4 : ")
for i in range(0, 5):
    print(i, end=" ")

La boucle for génère les nombres entiers compris entre 0 et 5 exclu.

In [ ]:
#équivalent à 
print("Compter de 0 à 4 : ")
for i in range(5):
    print(i, end=" ")
In [ ]:
print("Compter de 2 à 9 : ")
for i in range(2, 10):
    print(i, end=" ")
In [ ]:
print("Compter de 0 à 15 par saut de 3 : ")
for i in range(0, 16, 3):
    print(i, end=" ")
In [ ]:
print("Compter à rebours de 8 à 3 : ")
for i in range(8, 2, -1):
    print(i, end=" ")

Syntaxe
Elle fonctionne sur le modèle range(début, fin, [pas]).
L'argument entre crochets est en option.
Attention ! L'entier fin est exclu de l'intervalle : [début ; fin[.

In [ ]:
range(fin) # de 0 à fin exclu
range(début, fin) # de début à fin exclu
range(début, fin, pas) # de début à fin exclu par saut de pas unités

1.3. Répéter \(n\) fois un morceau de programme grâce à la boucle for

In [ ]:
#Répéter trois fois l'instruction print
for i in range(3):
    print('Bravo !')
In [ ]:
#Exercice
#Table de multiplication par 6
for i in range(1, 11):
    print(f"{i} * 6 = {i * 6}")

1.4. Parcourir une chaîne de caractères à l'aide de for

ma_chaine est une chaîne de caractères.
Algorithme du parcours séquentiel de la chaîne ma_chaine

  • Prendre la première lettre de ma_chaîne puis la traiter (l'afficher, ici) ;
  • Prendre la deuxième lettre puis la traiter ;
  • Prendre la troisième lettre puis la traiter ;
  • ...

Pseudo-code

lettre est une chaîne de caractères

Pour lettre dans ma_chaine, Faire :

Afficher lettre

Fin Pour

Traduction en langage Python

In [ ]:
ma_chaine = "informatique"
for lettre in ma_chaine:
    print(lettre)

Une variante du parcours utilisant les indices
Pseudo-code

i est un entier

Pour i compris entre 0 et \(n-1\) (\(n\) étant la taille de ma_chaine), Faire :

Afficher la lettre de ma_chaine d'indice i

Fin Pour

    Ce qui revient à :
  • Prendre ma_chaine[0] puis la traiter (l'afficher, dans ce cas) ;
  • Prendre ma_chaine[1] puis la traiter ;
  • Prendre ma_caine[2] puis la traiter ;
  • ...

Traduction en langage Python

In [ ]:
#Parcourir une chaîne par les index 
print(f"\nVoici les différentes lettres et leur positions dans {ma_chaine}")
for i in range(len(ma_chaine)):
    print(f"\nLa lettre {ma_chaine[i]} est à l'index {i} du mot {ma_chaine}")

Faites-vous plaisir :

  1. Écrire un programme qui demande à l'utilisateur de saisir une phrase puis compte le nombre de lettre e (majuscule ou minuscule et les lettres n'étant pas accentuées) dans la phrase.
  2. Écrire un programme qui demande à l'utilisateur d'entrer une phrase puis l'affiche sans ses voyelles.

1.5. Les instructions break et continue

L'instruction break est utile pour sortir immédiatement de la boucle.
L'instruction continue est utilisée pour abandonner le traitement du reste du corps de la boucle pour l'itération en cours et passer à la suivante, en restant dans la boucle.

In [ ]:
nbre_essais = 5
for i in range(5):
    user_input = int(input("Entrer un nombre : "))

    if user_input == 7:
        print('Vous avez gagné !')
        break
    else:
        nbre_essais -= 1
        print(f"Il vous reste {nbre_essais} chances.")
In [ ]:
for entier in range(1_000):
    # on ignore les nombres non multiples de 7
    if entier % 7 != 0:
        continue
    print(f"On traite l'entier {entier}")
    # on s'arrête si entier est supérieur à 30
    if entier >= 30:
        break
print("On est sorti de la boucle")
In [ ]:
mot = input("Entrer une phrase. ")
index_carac = 0
for carac in mot:
    print(f"{carac} se trouve au rang {index_carac}.")
    index_carac += 1
    if index_carac > 20:
        print("Votre phrase est trop longue !")
        break

2. Tuple

tuples