Boucle itérative : pour/for

Avec l'instruction range

La structure "for" avec range

Voici la structure en Python d'une boucle répétitive for avec range

for i in range(n):
	instruction 1
	instruction 2
	...
	

Dans cette boucle $i$ prendra les valeurs de 0 à $n-1$.

Toutes les instructions dans la boucle seront appliquées pour chaque valeur de $i$.

Dans cette structure, on connait à l'avance le nombre de répétitions. Dans notre cas, il est égal à $n$.

Cette boucle fait le calcul : 0+1+2+3+...+10

s=0
for i in range(11):
    s=s+i
print(s)

Vérifier que le résultat affiché correspond bien à la somme 0+1+2+3+...+10.

Vous pouvez visualiser les différentes étapes de calcul mises en oeuvre par cet algorithme ci-dessous :

Plus généralement, lors de l'instruction for i in range(m,n), où m et n sont deux entiers tels que n>m, i prend toutes les valeurs entières entre m et n-1.

Modifier le code de l'exemmple précédent de sorte d'afficher la somme $10+11+12+13+...+99+100$.

Code de déblocage du lien menant à la correction :

L'objectif de cet exercice est d'écrire une fonction Python compter_voyelles(ch) qui prend en paramètre une chaîne de caractères, ch représentant une phrase et qui retourne le nombre de voyelles dans ce mot.

  1. Tester le script suivant :
    ch = "La vie"
    print(len(ch))
    Que fait la fonction len?
  2. Tester le script suivant :
    ch = "Pourquoi tant de poissons vivent-ils dans l'eau salée? Parce que l'eau poivrée les ferait éternuer!"
    for i in range(0,len(ch)):
        print(ch[i])
    Modifier le script pour qu'il affiche le nombre de caractères de cette chaîne de caractère.
  3. Tester le script suivant :
    ch = "Pourquoi tant de poissons vivent-ils dans l'eau salée? Parce que l'eau poivrée les ferait éternuer!"
    print("z" in ch)
    print("e" in ch)
    A quoi sert l'opérateur in?
  4. Citer l'ensemble des voyelles
  5. Compléter le code suivant :
    def compter_voyelles(ch):
        compteur = ...
        for i in ...:
            if ... in "aeiouyAEIOUY":
                ...
        return compteur
    assert compter_voyelles("Pourquoi tant de poissons vivent-ils dans l'eau salée? Parce que l'eau poivrée les ferait éternuer!") == 36, "Try again !"

Code de déblocage du lien menant à la correction :

L'objectif de cet exercice est d'écrire une fonction Python compter_lettre(ch, lettre) qui prend en paramètre une chaîne de caractères, ch et une lettre et qui retourne le nombre de lettre présentes dans la phrase ch.

  1. Tester le script suivant :
    ch = "Pourquoi les plongeurs plongent-ils toujours en arrière et jamais en avant ? Parce que sinon, ils tombent dans le bateau !"
    for lettre in ch : 
        print(lettre)
    Quelle difference y a t il dans la manière d'écrire cette boucle for par rapport à l'exercice précédent?
  2. Compléter le code suivant :
    def compter_lettre(ch, lettre):
        compteur = ...
        for elt in ...:
            if ... :
                ...
        return compteur
    assert compter_lettre("Pourquoi les plongeurs plongent-ils toujours en arrière et jamais en avant ? Parce que sinon, ils tombent dans le bateau !", "e") == 12, "Try again !"
    assert compter_lettre("Pourquoi les plongeurs plongent-ils toujours en arrière et jamais en avant ? Parce que sinon, ils tombent dans le bateau !", "r") == 7, "Try again !"
    

Écrire une fonction somme(n) où $n$ est un entier qui renvoie la valeur de la somme $1+2+3+...+n$.

Code de déblocage du lien menant à la correction :

exercice de renforcement

Un village en zone périurbaine compte aujourd'hui 2300 habitants. Le village voit sa population augmenter chaque année de 120 habitants.

  1. Proposez une fonction nommée population qui prend comme argument un entier $N$ et qui renvoie la population de ce village au bout de $N$ années écoulées.

  2. Testez votre fonction avec quelques valeurs.

Code de déblocage du lien menant à la correction :

Correction de l'exercice en vidéo accessible par ce lien.

exercice de renforcement

Votre ami Crésus dispose d'une somme de 1000€ qu'il décide de placer en banque. La banque lui propose pour un placement d’un montant de 1000 euro fait le $\text{1}^\text{er}$ janvier 2022, un taux d’intérêt composé annuel de 2 %. Cela signifie qu’à la fin de chaque année la somme en banque augmente de 2%.

Augmenter de 2% revient à multiplier par $\displaystyle{\left(1+\frac{2}{100}\right)}$.

  1. Quelle somme d'argent disposera Crésus sur son placement en janvier 2023 ?

  2. Quelle somme d'argent disposera Crésus sur son placement en janvier 2024 ?

  3. Code de déblocage du lien menant à la correction :

  4. Le but est de connaître la somme présente sur le placement au bout de 10 ans, soit en janvier 2032, en supposant qu'aucun retrait ne sera effectué.
    Pour cela, reproduire et compléter l'algorithme en pseudo-code ci-dessous en sachant que :

    • N correspond à l'année considérée,

    • P à la somme présente sur son placement l'année N.

    • i est le compteur de la boucle répétitive Pour.

    N = ...
    P = ...                                
    for i in range(...) :                
        N = ...                        
        P = ...
    print("Au bout de 10 ans, Crésus aura",...,"€.")                              

Code de déblocage du lien menant à la correction :

Votre ami Youssouf possède une somme S de 5000€ qu’il aimerait placer sur un compte rémunéré à la banque.
La banque lui propose un taux à intérêts composés de 3% l’an, c’est à dire que son compte est augmenté de 3% chaque année. Youssouf voudrait connaître la somme d’argent qu’il possèderait chaque année ainsi que la somme totale au bout de 15 ans.

Il fait appel à vous afin que vous lui proposiez un algorithme permettant de savoir le capital au bout de 15 ans.
Réaliser cet algorithme.

Code de déblocage du lien menant à la correction :

Proposez un programme qui affiche tous les résultats possibles (éventuellement redondants) du produit deux nombres entiers compris entre 0 et 10.

Pour afficher un résutat comme "2*3=6" où 2 et 3 sont stockés dans deux variables a et b, il suffit de saisir le code print(a,"*",b,"=",a*b).

Code de déblocage du lien menant à la correction :

sur un objet itérable

La structure "for" avec in

Voici la structure en Python d'une boucle for avec in

for elt in iterable:
	instruction 1
	instruction 2
	...
			

Dans cette boucle, elt va parcourir les éléments de la iterable.

La iterable peut être une chaine de caractères.

Le programme ci-dessous affiche séparément chaque caractère d'une chaîne de caractères :

# -*- coding: utf-8 -*-
ch="Bonjour à tou.te.s"
for elt in ch:
    print(elt)

Vérifier que le programme .

Tester le script ci-dessus pour vérifier qu'il réalise bien ce qui a été annoncé et modifier la chaîne de carctères avec une autre phrase (Vous pouvez aussi rajouter des nombres et des symboles).

  1. Que fait le code suivant ?

    # -*- coding: utf-8 -*-
    citation="Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions."
    compteur=0
    for elt in citation:
    	if elt=="e":
    		compteur=compteur+1
    print(compteur)
    	

    Exécuter sur code et changer la citation afin de trouver, valider ou infirmer une hypothèse sur le rôle de ce code.

  2. Transformer le code pour qu'il compte le nombre de i.

Code de déblocage du lien menant à la correction :

exercice de renforcement

Proposer une fonction pour_perec qui remplace tous les "e" d'une phrase par un espace " ".

Code de déblocage du lien menant à la correction :

Exercices de renforcement

Sur la boucle répétitive for

Écrire une fonction somme_carree(n) où $n$ est un entier qui renvoie la valeur de $1^2+2^2+...+n^2$.

Pour accéder au code de la correction : lien

Éléonore Wouétel fait des économies. Elle a placé en début d'année 1000€ sur un compte rémunéré en banque. Elle pense que durant chacune des huit années suivantes, elle pourra déposer sur ce compte 200€.
De plus, la banque lui verse, à la fin de chaque année, 1% d'intérêt, c'est à dire qu'elle rajoute sur le compte 1% de la somme présente sur le compte en début d'année.

Proposer un algorithme qui affiche la somme qu'Élénore aura sur son compte au bout de huit années de placement.

Pour accéder au code de la correction : lien

Proposer une fonction nommée nb_voyelles qui prend en arguments une chaîne de caractères et qui renvoie le nombre de voyelles (minuscules non accentuées) de cette chaîne. Tester ensuite par exemple en exécutant nb_voyelles("Ah oui ! Vive l'été !"").

Vous pouvez utiliser le mot-clé or ; exemple : elt=='e' or elt='i' signifie que l'on teste si "elt est un 'e' ou un 'i' ".

Pour accéder au code de la correction : lien

Licence Creative Commons
Les différents auteurs mettent l'ensemble du site à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International