Chapitre 4 Structures Itératives
4.1 Activité 1: While
- 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.
- 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
? - 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.
- En vous inspirant du programme précédent, écrire en utilisant une boucle while un script qui affique 3,2,1,FEU!.
- 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:
= int(input('Saisir un entier positif ou nul: '))
nb if ... :
...
- 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
- Ecrire avec un papier et un crayon le déroulement du programme suivant:
= 1
a for compteur in range(4):
= a + 2
a print(a)
- Comment qualifie-t-on la variable
a
dans le programme précédent ? - Compléter le programme suivant afin qu’il affiche la moyenne des notes saisies par l’utilisateur.
= int(input('Entre le nombre de notes obtenues: '))
nb_notes = 0
somme for _ in range(...):
= int(input('Saisir une note: '))
note = somme + ...
somme = ...
moyenne print(f"La moyenne obtenue {moyenne : <4.1f}")
- 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
- En utilisant la fonction
range(début, fin, pas)
écrire un programme qui énumère les entiers impairs : 1,3,5,7,9. - Modifier l’instruction
range
du programme précédent pour afficher: 9,7,5,3,1.
4.3 Activité 3: Boucles imbriquées
- 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)
- 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
- Refaire le même programme mais en remplaçant les boucles
for
par des boucleswhile
. - 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
- 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}\) - 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
- Modifier la fonction
multiplication
de manière à ce que l’appel de la fonction indique le début et la fin de la multiplication. Ainsimultplication(7,5,8)
affiche:
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
- 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)
etmultplication(7)
fonctionnent. - 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.
- 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
- Ecrire avec un papier et un crayon le déroulement du programme suivant:
= 1
a for compteur in range(4):
= a + 2
a print(a)
- Comment qualifie-t-on la variable
a
dans le programme précédent ? - Compléter le programme suivant afin qu’il affiche la moyenne des notes saisies par l’utilisateur.
= int(input('Entre le nombre de notes obtenues: '))
nb_notes = 0
somme for _ in range(nb_notes):
= int(input('Saisir une note: '))
note = somme + note
somme = somme / nb_notes
moyenne print(f"La moyenne obtenue {moyenne : <4.1f}")
- 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}")
Activité 3:
from math import sin, pi
= 0
angle for i in range(30):
#print(angle)
= int(20*sin(angle))
taille += (( pi) / 15)
angle 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
7,5,8) multiplication(
## 7 * 5 = 35
## 7 * 6 = 42
## 7 * 7 = 49
## 7 * 8 = 56
print('table de 7 complète')
## table de 7 complète
7) multiplication(
## 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)
= randint(1,10), randint(1, 10)
a,b print(f"{a} * {b} = ",end="")
= int(input())
reponse if reponse == a * b:
= score + 2
score else:
-= 1
score = 0
score while score <= 10:
question()print('Gagné ! Votre score : ',score)