Chapitre 4 Structures Itératives

4.1 Activité 1: While

  1. Ecrire sur un papier le déroulement ligne à ligne du programme suivant. On rédigera dans un tableau à 3 colonnes: Ligne ; Valeur de n et i ; Commentaire.
n = 11
i = 2
while i <= n:
  print(i)
  i = 2 * i
print('fin')
  1. Dans le programme précédent, combien de fois est effectué le corps de la boucle ? Combien de fois est effectué le test i <= n ?
  2. On inverse les lignes 4 et 5 du programme précédent. Expliquer en détail pourquoi ce qui est affiché est différent du premier programme.
n = 11
i = 2
while i <= n:
  i = 2 * i
  print(i)
print('fin')
  1. En vous inspirant du programme précédent, écrire en utilisant une boucle while un script qui affique 3,2,1,FEU!.
  2. Compléter le programme suivant afin que la boucle cesse lorsqu’un nombre positif ou nul est entré au clavier. (indice: il faut utiliser l’instruction break)
while True:
  nb = int(input('Saisir un entier positif ou nul: '))
  if ... :
    ...
  1. Ecrire un programme qui demande un entier strictement positif à l’utilisateur, puis tant que cet entier n’est pas égal à 1:
  • le divise par 2 s’il est pair
  • le multiplie par 3 et lui ajoute 1 s’il est impair

Le programme affiche tous les nombres calculés ainsi. Testez avec différents nombres de départ, qu’observez-vous ?

4.2 Activité 2: For

  1. Ecrire avec un papier et un crayon le déroulement du programme suivant:
a = 1
for compteur in range(4):
  a = a + 2
print(a)
  1. Comment qualifie-t-on la variable a dans le programme précédent ?
  2. Compléter le programme suivant afin qu’il affiche la moyenne des notes saisies par l’utilisateur.
nb_notes = int(input('Entre le nombre de notes obtenues: '))
somme = 0
for _ in range(...):
  note = int(input('Saisir une note: '))
  somme = somme + ...
moyenne = ...
print(f"La moyenne obtenue {moyenne : <4.1f}")
  1. Modifier le programme précédent de manière à obtenir la sortie suivante:
Entre le nombre de notes obtenues: 3
Saisir la note numéro  1 15
Saisir la note numéro  2 11
Saisir la note numéro  3 12
La moyenne obtenue 12.7
  1. En utilisant la fonction range(début, fin, pas) écrire un programme qui énumère les entiers impairs : 1,3,5,7,9.
  2. Modifier l’instruction range du programme précédent pour afficher: 9,7,5,3,1.

4.3 Activité 3: Boucles imbriquées

  1. On dispose d’une grille de jeu de 10 cases de long sur 10 cases de larges. Chaque case du plateau est repérée par son numéro de ligne et son numéro de colonne. Ecrire un programme qui énumère les coordonnées de toutes les cases du jeu. On utilisera deux boucles for imbriquées.
(1 ; 1) (2 ; 1) (3 ; 1) (4 ; 1) (5 ; 1) (6 ; 1) (7 ; 1) (8 ; 1) (9 ; 1) (10 ; 1) (1 ; 2) (2 ; 2) (3 ; 2) (4 ; 2) (5 ; 2) (6 ; 2) (7 ; 2) (8 ; 2) (9 ; 2) (10 ; 2)
  1. Faire un programme qui affiche:
X X X X X X X X X 
X X X X X X X X X 
X X X X X X X X X 
X X X X X X X X X 
X X X X X X X X X 
X X X X X X X X X 
X X X X X X X X X 
X X X X X X X X X 
X X X X X X X X X 
  1. Refaire le même programme mais en remplaçant les boucles for par des boucles while.
  2. Un peu plus difficile. Ecrire un programme qui affiche:
                               XXXX                          
                               XXXXXXXX                      
                               XXXXXXXXXXX                   
                               XXXXXXXXXXXXXX                
                               XXXXXXXXXXXXXXXXX             
                               XXXXXXXXXXXXXXXXXXX           
                               XXXXXXXXXXXXXXXXXXX           
                               XXXXXXXXXXXXXXXXXXX           
                               XXXXXXXXXXXXXXXXXXX           
                               XXXXXXXXXXXXXXXXX             
                               XXXXXXXXXXXXXX                
                               XXXXXXXXXXX                   
                               XXXXXXXX                      
                               XXXX                          
                                                             
                           XXXX                          
                       XXXXXXXX                      
                    XXXXXXXXXXX                   
                 XXXXXXXXXXXXXX                
              XXXXXXXXXXXXXXXXX             
            XXXXXXXXXXXXXXXXXXX           
            XXXXXXXXXXXXXXXXXXX           
            XXXXXXXXXXXXXXXXXXX           
            XXXXXXXXXXXXXXXXXXX           
              XXXXXXXXXXXXXXXXX             
                 XXXXXXXXXXXXXX                
                    XXXXXXXXXXX                   
                       XXXXXXXX                      
                           XXXX
                          

4.4 Activité 4: Synthèse

  1. Ecrire un programme qui demande à l’utilisateur d’entrer un entier n. Le programme calcule et affiche la somme 1 + 2 + … + n-1 + n. Vérifier que le résultat vaut \(\frac{n\times (n+1)}{2}\)
  2. Ecrire une fonction multiplication qui reçoit un entier et affiche sa table de multiplcation. Exemple de sortie:
7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63
7 * 10 = 70
  1. Modifier la fonction multiplication de manière à ce que l’appel de la fonction indique le début et la fin de la multiplication. Ainsi multplication(7,5,8) affiche:
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
  1. Modifier légèrement la fonction afin que si on ne passe pas l’argument de début et de fin la fonction s’exécute en affichant toute la table en 1 à 10. Ainsi les deux appels multplication(7,5,8) et multplication(7) fonctionnent.
  2. Ecrire un programme qui demande à l’utilisateur d’entrer le résultat d’une multiplication élémentaire par exemple 5*3.
  • Si la valeur saisie est correcte le joueur gagne deux points
  • Sinon il perd un point
  • Le jeu se poursuit tant que le joueur n’a pas atteint un score d’au moins 10 pts.
  1. Ecrire une fonction double_six qui affiche le tirage de deux dés (valeurs aléatoires comprises entre 1 et 6). Le tirage cesse dès que un double 6 a été obtenu.

4.5 Corrections des activités

4.5.1 Activité 1

4.5.2 Activité 2: For

  1. Ecrire avec un papier et un crayon le déroulement du programme suivant:
a = 1
for compteur in range(4):
  a = a + 2
print(a)
  1. Comment qualifie-t-on la variable a dans le programme précédent ?
  2. Compléter le programme suivant afin qu’il affiche la moyenne des notes saisies par l’utilisateur.
nb_notes = int(input('Entre le nombre de notes obtenues: '))
somme = 0
for _ in range(nb_notes):
  note = int(input('Saisir une note: '))
  somme = somme + note
moyenne = somme / nb_notes
print(f"La moyenne obtenue {moyenne : <4.1f}")
  1. nb_notes = int(input(‘Entre le nombre de notes obtenues:’)) somme = 0 for i in range(nb_notes): print(“Saisir la note numéro,” i+1, end= "“) note = int(input(’ ’)) somme = somme + note moyenne = somme / nb_notes print(f”La moyenne obtenue {moyenne : <4.1f}")
  2. Activité 3:

from math import sin, pi
angle = 0
for i in range(30):

  #print(angle)
  taille = int(20*sin(angle))
  angle += (( pi) / 15)
  if taille>=0:
    print(f"{' '*30} {'X'*taille : <30}")
  else:
    print(f"{' '*(30+taille)} {'X'*(-taille) : <30}")

4.5.3 Activité 4

def multiplication(n,debut=1,fin=10):
  for i in range(debut,fin+1):
    print(f"{n} * {i} = {n*i}")
print('table de 7 de 5 à 8')
## table de 7 de 5 à 8
multiplication(7,5,8)
## 7 * 5 = 35
## 7 * 6 = 42
## 7 * 7 = 49
## 7 * 8 = 56
print('table de 7 complète')
## table de 7 complète
multiplication(7)
## 7 * 1 = 7
## 7 * 2 = 14
## 7 * 3 = 21
## 7 * 4 = 28
## 7 * 5 = 35
## 7 * 6 = 42
## 7 * 7 = 49
## 7 * 8 = 56
## 7 * 9 = 63
## 7 * 10 = 70
from random import randint
def question():
  global score
  print(score)
  a,b = randint(1,10), randint(1, 10)
  print(f"{a} * {b} = ",end="")
  reponse = int(input())
  if reponse == a * b:
      score = score + 2
  else:
    score -= 1
score = 0
while score <= 10:
  question()
print('Gagné ! Votre score : ',score)