S 1 - Bases en Python - les boucles

le cours

Premier exemple

Exemple : première boucle
Voici un premier code très simple
Mais à quoi sert la variable i ?
En fait, dans le cas de ce code très simple : i ne sert à rien !

→ i est un compteur de la boucle : une variable qui augmente de 1 à chaque passage.
  • Au départ, i vaut 0
  • puis 1
  • puis 2.

Affichons les valeurs de i dans la boucle

Exemple : Afficher le compteur
Affichons les valeurs successives de i dans la boucle
Les valeurs de i sont bien, successivement, 0 puis 1 puis 2, et on s'arrête donc là. On a bien répété 3 fois.
Et une fois sorti de la boucle, est-ce que i vaut quelque chose ? Regardons !

Valeur du compteur quand la boucle est terminée

Exemple : Le compteur après la fin de la boucle
Et que vaut i à la fin de la boucle ?

Un premier exercice

Exercice de code : Afficher la table de 9
Compète le code pour afficher la table de 9.
Tu dois :
  1. Compléter le in range(..,..) : pour faire une boucle allant de 1 à 10
  2. Complétez l'instruction print(...)
par exemple, quand i=1, print affichera :
1 * 9 = 9

L'indentation

En scratch, les boucles sont des boites qui marquent bien le début et la fin :

Les instructions à l'intérieur de la boucle sont identifiées dans le bloc répéter 3 fois

En python, les : marquent le début de la boucle, et tout le bloc à 'lintérieur de la boucle est indenté (décalé vers la droite).

Exemple : #affiche a dans la boucle:
ne pas confondre avec :
Exemple : #affiche a en dehors de la boucle:

Dans cet exemple, le print(a) n'est donc pas dans la boucle, conformément à ce qu'on voit dans le code en Scratch.

Avec une variable définie en dehors de la boucle

Souvent une boucle va effectuer des opération en utilisant des variables qui ont déjà une valeur en dehors de cette boucle, et qui seront modifiées durant l'exécution de la boucle.

Voyons un exemple simple :

Exemple : Avec une variable définie avant la boucle
Avant la boucle on INITIALISE a à la valeur 1.
On va ITERER 3 fois :
    Dans la boucle on INCREMENTE a de 1
    et on affiche sa valeur.
on affiche enfin la valeur de a après la boucle

Avant le début de la boucle, a vaut 1.
Au premier passage dans la boucle, a=a+1 (donc a vaut 2) avant qu'on affiche sa valeur.
Au second passage dans la boucle, a=a+1 (donc a vaut 3) avant qu'on affiche sa valeur.
Au 3ème passage dans la boucle, a=a+1 (donc a vaut 4) avant qu'on affiche sa valeur.
A la sortie de la boucle a vaut toujours 4 (on ne l'a pas modifiée).

ATTENTION
Regardons ce code, très légèrement différent du précédent ;

Exemple : Modifions légèrement le code
Comme précédement, avant la boucle on INITIALISE a à la valeur 1. puis on va ITERER 3 fois.
En revanche, dans la boucle on INCREMENTE a de 1 APRESl'affichage de sa valeur.


le TP

Sissa et l'échiquier du roi Shirham

L'érudit musulman Abu-l'Abbas Ahmad Ibn Khallikan (1211-1282) semble être, en 1256, le premier à débattre de l'histoire du grand vizir Sissa ben Dahir, auquel, selon la légende, le roi indien Shirham aurait demandé quelle récompense il souhaitait pour avoir inventé le jeu d'échecs.

Sissa répondit ainsi : « Majesté, je serais heureux si vous m'offriez un grain de blé que je placerais sur la première case de l'échiquier, deux grains pour la deuxième case, quatre grains pour la troisième, huit grains pour la quatrième, et ainsi de suite pour les soixante-quatre cases ».

Exercice mêlé : L'echiquier de Sissa partie 1
Le code ci-dessous doit afficher le nombre de grains sur chacune des 4 premières cases de l'échiquier, mais il ne fait pas le travail correctement. Saura tu remettre les lignes dans l'ordre, pour le réparer ?
(tu peux déplacer les lignes du code)
  • #initialisons le nombre de grains sur la première case :
  • n=1
  • #Debut de la boucle :
  • for case in range(4 ):
  • n=2*n
  • print(n)

Bien, nous savons calculer le nombre de grains sur chaque cases. Nous l'avons obtenu pour 4 cases, il est trivial de le faire pour les 64 cases. Mais il faudrait aussi calculer le nombre total de grains...
Restons sur nos 4 première cases. Essaye de compléter le code ci-dessous pour obtenir le nombre total de grains sur les 4 premières cases.

Exercice de code : L'echiquier de Sissa
Complète le code ci-dessous pour calculer le nombre total de grains sur l'échiquier après seulement 4 cases Aide1 Aide2

15 grains seulement ? Le roi était ravi de s'en tirer à si bon compte....
Mais il avait tort ! Recopie ton code précédent ici, et change le pour connaitre le nombre total de grains sur les 64 cases de l'échiquier..

Exercice de code : L'echiquier de Sissa
Complète le code ci-dessous pour calculer le nombre total de grains sur l'échiquier après seulement 4 cases