Python au lycée (3) : Les boucles Entraînement

Compléter un programme avec une boucle

Durée estimée
5 minutes
Difficulté
Votre progression

Créez un compte gratuit pour suivre votre avancement et reprendre où vous avez laissé.

Créer un compte

Objectifs travaillés

Une association récolte des dons. Chaque semaine, le montant collecté augmente de $3$ euros : $3$ euros la première semaine, $6$ euros la deuxième, $9$ euros la troisième, et ainsi de suite jusqu'à la dixième semaine.

On souhaite écrire un programme Python qui calcule le total récolté au bout des $10$ semaines, c'est-à-dire la somme $3 + 6 + 9 + \ldots + 30$. Le programme est donné à trous : il s'agit de le compléter ligne par ligne, puis d'anticiper son affichage.

Déroulement pas à pas (Correction et Indices)

Étape 1 :

On hésite entre une boucle for et une boucle while pour parcourir les $10$ semaines. Quel type de boucle convient le mieux ici ?

  • (Correct) Une boucle [i]for[/i]
  • (Incorrect) Une boucle [i]while[/i]
  • (Incorrect) Les deux sont impossibles ici
Étape 2 :

Avant la boucle, il faut préparer la variable qui contiendra le total récolté. On la nomme S. Écrire la ligne d'initialisation de S.

Étape 3 :

La boucle est écrite for i in range(1, ...) de façon à ce que i prenne successivement les valeurs $1, 2, 3, \ldots, 10$. Par quelle valeur faut-il remplacer les pointillés pour que la borne supérieure $10$ soit bien parcourue ?

Attendu : $$ 11 $$

Étape 4 :

À chaque tour de boucle, le montant de la semaine vaut $3 \times i$ euros (semaine $1$ : $3$, semaine $2$ : $6$, etc.). Écrire la ligne, à l'intérieur de la boucle, qui ajoute ce montant au total S.

Étape 5 :

Le programme complet est donc :

S = 0
for i in range(1, 11):
    S = S + 3*i
print(S)

Quelle valeur s'affiche à l'écran à la fin de l'exécution ?

Attendu : $$ 165 $$

Étape 6 :

On modifie maintenant le projet : l'association veut savoir au bout de combien de semaines le total récolté atteint ou dépasse $100$ euros. Cette fois, le nombre de tours n'est plus connu d'avance. Quel type de boucle est désormais le plus adapté ?

  • (Incorrect) Une boucle [i]for[/i] avec [i]range[/i]
  • (Correct) Une boucle [i]while[/i]
  • (Incorrect) Aucune boucle n'est nécessaire