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 des instructions un nombre de fois déterminé, en comparaison avec la bouclewhiledéjà connue. - Utiliser la fonction
range()pour créer une suite de nombres entiers - Manipuler une séquence (string, tuple)
- Écrire un algorithme de parcours séquentiel
Un mini-projet
Créer un jeu appelé Mots masqués :
- l'ordinateur choisit au hasard un mot parmi une liste de mots ;
- il mélange les lettres de ce mot et l'affiche ;
- le joueur doit ensuite deviner de quel mot il s'agit.
1. Boucle for
La boucle for permet, comme la boucle while, de répéter un bloc d'instructions.
Cependant, leur fonctionnement diffère.
- La boucle while s’exécute tant qu’une condition booléenne est vraie.
- La boucle for, elle, s’appuie sur le parcours d’une séquence finie et ordonnée.
À chaque itération, la variable de boucle prend successivement une valeur parmi celles fournies par l'expression range, dans l’ordre, et le corps de la boucle est exécuté une fois pour chaque valeur.
1.1. Mise en œuvre de la boucle for
Exemple avec while
i = 0
while i < 5:
print(i)
i += 1
Et maintenant la même chose avec une boucle for
for i in range(5):
print(i)
Avantage de for
- Plus lisible
- Moins d'erreurs (pas d'oubli de i += 1)
- Idéal quand on connaît le nombre de répétitions
1.2. La boucle for peut aussi parcourir les caractères d'une chaîne
La boucle for ne fonctionne pas uniquement avec range(...). Elle peut aussi parcourir chaque caractère d’une chaîne, dans l’ordre.
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 chaîne de caractères est une séquence c'est-à-dire une collection ordonnée d'éléments
Dans le cas d'un mot, les éléments sont les lettres qui le composent.
La boucle for utilise une variable (lettre) qui désigne successivement chaque caractère du mot saisi.
À chaque itération, le corps de la boucle est exécuté avec la variable lettre référant au caractère courant.
Ce processus se répète jusqu’à ce que toutes les lettres aient été parcourues.
1.3. Compter à l'aide de la boucle for : la fonction range()
La boucle for peut être utilisée pour parcourir une suite d’entiers générée par l’expression range(...). Par exemple, range(5) génère les entiers de 0 à 4, soit 5 valeurs, la borne supérieure étant exclue.
print("Compter de 0 à 4 : ")
for i in range(0, 5):
print(i, end=" ")
#équivalent à
print("Compter de 0 à 4 : ")
for i in range(5):
print(i, end=" ")
print("Compter de 2 à 9 : ")
for i in range(2, 10):
print(i, end=" ")
print("Compter de 0 à 15 par saut de 3 : ")
for i in range(0, 16, 3):
print(i, end=" ")
print("Compter à rebours de 8 à 3 : ")
for i in range(8, 2, -1):
print(i, end=" ")
Syntaxe de range()
-
range(fin)
Génère les entiers naturels de 0 à fin - 1 -
range(début, fin)
Génère les entiers de début à fin - 1 -
range(début, fin, pas)
Génère les entiers en partant de début, en ajoutant pas à chaque fois, jusqu’à fin (exclu)
Attention ! La borne fin est exclue dans tous les cas. On parle d’un intervalle de la forme : ⟦début ; fin⟦
# Quelles valeurs sont générées par :
range(1, 10, 4)
range(5, 0, -2)
1.4. Répéter \(n\) fois un morceau de programme grâce à la boucle for
#Répéter trois fois l'instruction print
for i in range(3):
print('Bravo !')
#Exercice
#Table de multiplication par 6
for i in range(1, 11):
print(f"{i} * 6 = {i * 6}")
1.5. Deux manières de parcourir une chaîne avec for : algorithme du parcours séquentiel
1.5.1. Directement sur les caractères
Pseudo-code
Variables :
ma_chaine : chaîne de caractères
lettre : caractère
Début
Entrer ma_chaine
Pour chaque lettre dans ma_chaine, faire :
Afficher lettre
Fin Pour
Fin
Traduction en langage Python
ma_chaine = "informatique"
print(f"Lettres du mot : {ma_chaine}")
for lettre in ma_chaine:
print(lettre)
1.5.2. À l’aide des indices
Pseudo-code
Variables :
ma_chaine : chaîne de caractères
i : entier
Début
Saisir ma_chaine
Pour i allant de 0 à longueur(ma_chaine) - 1, faire :
Afficher la lettre de ma_chaine d’indice i
Fin Pour
Fin
Traduction en langage Python
# 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}")
ma_chaine = "Python"
i = 0
while i < len(ma_chaine):
print(ma_chaine[i])
i += 1
1.6. 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.
# break : sortir immédiatement de la boucle
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.")
# continue : ignorer le reste du corps de la boucle
for entier in range(1_000):
# on ignore les nombres non multiples de 7
if entier % 7 != 0:
continue # sauter les non-multiples de 7
print(f"On traite l'entier {entier}")
# on s'arrête si entier est supérieur à 30
if entier >= 30:
break
Parcours séquentiel : quelle structure utiliser entre for et while ?
Pour un parcours séquentiel simple, for est toujours préférable en Python.
On utilise while quand on ne sait pas à l’avance combien d’itérations il faudra faire, ou quand on attend une condition logique.
Faites-vous plaisir 1 :
- Qu'affiche le code suivant ?
for entier in range(1, 13):
entier = 13
print(count)
print("Terminé !")
- Le code suivant tourne-t-il indéfiniment ?
while True:
break
print("Terminé !")
- Le code suivant affichera-t-il le message « Bouclage » ?
while True:
continue
print("Bouclage")
Faites-vous plaisir 2 :
- Écrire un programme qui demande à l'utilisateur de saisir une phrase puis compte le nombre de lettre S dans la phrase.
- Écrire un programme qui demande à l'utilisateur d'entrer une phrase puis l'affiche sans ses voyelles.
- Écrire un programme Python qui demande à l'utilisateur de saisir une chaîne et compte le nombre de voyelles (a, e, i, o, u) dans la chaîne.
- Écrire un programme qui demande à l'utilisateur de saisir un mot, puis affiche ce mot à l'envers (en partant de la fin).
- Écrire un programme Python qui demande à l’utilisateur de saisir un entier et calcule la somme de ses chiffres (puis produit le des chiffres)