N.B. Niveau : Première Générale, enseignement de spécialité NSI (Numérique et Sciences Informatiques)
Une boucle permet d'exécuter une portion de code plusieurs fois de suite.
while
Syntaxe :
while (expression): # ne pas oublier le signe de ponctuation ':'
bloc d'instructions # attention à l'indentation
# suite du programme
Si l'expression est vraie (True
) le
bloc d'instructions est exécuté, puis l'expression est à nouveau
évaluée.
Le cycle continue jusqu'à ce que l'expression soit fausse (False
)
: on passe alors à la suite du programme.
Exemple 1 : un script qui compte de 1 à 4
Exemple 2 : Table de multiplication par 8 :
Exemple 3 : Affichage de l'heure courante :
for
Syntaxe :
for (élément) in (séquence) :
bloc d'instructions
# suite du programme
Les éléments de la séquence sont issus d'une chaîne de caractères ou bien d'une liste.
Exemple 4 : Affichage des lettres d'une chaine de caractères
La variable lettre
est initialisée
avec le premier élément de la séquence ('B'
).
Le bloc d'instructions est alors exécuté.
Puis la variable lettre
est mise à jour avec
le second élément de la séquence ('o'
) et le
bloc d'instructions à nouveau exécuté...
Le bloc d'instructions est exécuté une dernière fois lorsqu'on arrive
au dernier élément de la séquence ('r'
) :
Un autre exemple avec une liste :
Là, on affiche dans l'ordre les éléments de la liste :
L'association avec la fonction range()
est très utile pour créer des séquences automatiques de nombres entiers :
La création d'une table de multiplication paraît plus simple
avec une boucle for
qu'avec une boucle while
:
break
L'instruction break
provoque une
sortie immédiate d'une boucle while
ou d'une
boucle for
.
Dans l'exemple suivant, l'expression True
est toujours ... vraie : on a une boucle sans fin.
L'instruction break
est donc le seul moyen de
sortir de la boucle :
Si vous connaissez le nombre de boucles à effectuer, utiliser
une boucle for
.
Autrement, utiliser une boucle while
(notamment pour faire des boucles sans fin).
Mission n°1 ★ Réduire et optimiser le script du tour de magie
Constat :
On remarque que les nombres surlignés s'incrémentent (+1) pour chaque morceau de code similaire
Modifier votre programme précédent en utilisant une boucle while et une variable qui sera incrémentée à chaque tour de boucle
Algorithme de la bouclei←0 Tant que i<6 alors Afficher tableaux[i] ... ... si le nombre choisi se trouve dans le tableau alors additionner à nombre tableaux[i][0] fin si incrémenter i fin tant que
Mission n°2 ★
Remplacer la boucle while par une boucle for
Mission n°3 ★
Ecrire un programme qui calcule la moyenne d'une série de
notes stockée dans un tableau notes=[13,14.5,11,6.5]
.
On pourra utiliser l'instruction len(notes)
qui renvoie le nombre de
notes contenues dans le tableau.
une variable somme contiendra la somme de toute les notes, lues avec une boucle pour
Résultat :
moyenne : 11.25
Mission n°4 ★
Avec une boucle pour
, écrire un script qui
compte le nombre de lettres s dans une chaîne de caractères.
i ← 0 demander à l'utilisateur de rentrer la chaîne stocker la chaine dans la variable chaine pour chaque lettre dans la chaine faire si la lettre est un s ou un S incrémenter i fin si fin pour afficher le résultatRésultat :
Entrer la chaîne : Neymar da Silva Santos il y a 3 s dans Neymar da Silva Santos
Missions n°5 ★ Ecrire le programme de rendu de monnaie dont l'algorithme est donné ci-dessous :
pieces ← [5,2,1]
M ← montant à rendre en Euros (exemple 13)
i ← 0
Tant que M>0
NbrPieces ← division entière de M par pieces[i]
si NbrPieces > 0
Afficher le nombre de pièces et la pièce
M ← M modulo pieces[i]
fin si
i ← i+1
Fin tant que
Résultat:
>>>
2 pièce(s) de 5 €
1 pièce(s) de 2 €
1 pièce(s) de 1 €
Modifiez le programme ci-dessus pour qu'il fonctionne avec des nombres décimaux et les pièces de 0.5, 0.2 et 0.1
Mission n°6 ★☆:
Création des tableaux du tour de magie par programme
Le premier tableau est composé des nombres impairs, pour obtenir le nombre suivant on incrémente le précédent de 2
Les compréhensions de liste en python permettent de réduire le code. Voici la syntaxe :
ma_liste = [fonction(variable) pour variable dans liste si condition(variable)]
tableau1=[i for i in range(1,64) if i%2==1]
i
for i in range(1,64)
if i%2==1
traduction : On inscrit dans tableau1 toutes les valeurs de i, pour i variant de 1 à 64(exclu) si le reste de la division de i par 2 est égal à 1
Cette méthode ne fonctionne que pour générer la première ligne du tableau.
La méthode pour remplir toutes les sous-listes du tableau, provient du binaire.
Prenons le cas du tableau 2 qui commence par le chiffre 4 (22):
4, dans sa représentation binaire, est le poids du 3ème bit en partant de la droite. (Poids des bits : 32 16 8 4 2 1)
Tous les nombres se trouvant dans le tableau (dans le représentation binaire) ont toujours le troisième bit à 1
00 0100 | 4 |
00 0101 | 5 |
00 0110 | 6 |
00 0111 | 7 |
00 1100 | 12 |
00 1101 | 13 |
00 1110 | 14 |
00 1111 | 15 |
01 0100 | 20 |
... | ... |
11 1111 | 63 |
La méthode consiste à inscrire dans la liste les valeurs de i, pour i variant de 0 à 64, si i ET LOGIQUE
4 est vrai
La séquence des premiers éléments de chaque tableau est 20, 21, 22, ...
Créer par programme la variable tableaux avec une boucle pour et la méthode append
Pour vérifier votre méthode, copiez puis collez la solution de création des tableaux par compréhension de liste à la fin de votre programme
tableaux=[[i for i in range(64) if i & 2**j] for j in range(0,6)] print(tableaux)
Mission n°7 ★☆
Ecrire un script
qui calcule la moyenne des notes obtenues contenues au bac (le fichier est totalement fictif) , la note la
plus élevée et la plus basse contenue dans le fichier csv lesté ci-dessous.
Le fichier csv est un fichier texte dont les champs sont séparés par des ;
Résultat final :
>>>
La Liste contient 323 élèves
moyenne de tous les élèves : 11.28
La note la plus faible : 2.08
La note la plus élevée : 20.0
7 élèves se prénomment Lucas
>>>
Mission n°8 ★☆
1) Ecrire le script du jeu de devinette suivant :
>>>
Le jeu consiste à deviner un nombre entre 1 et 100 :
---> 50
trop petit !
---> 75
trop petit !
---> 87
trop grand !
---> 81
trop petit !
---> 84
trop petit !
---> 85
Gagné en 6 coups !
Remarques :
Bibliographie : La dichotomie
2) Quelle est la stratégie la plus efficace ?
3) Montrer que l'on peut deviner un nombre en 7 coups maximum.
calcul de son nombre d'expression
La numérologie ressemble à l’astrologie. Elle utilise les nombres pour obtenir les informations sur votre caractère par exemple.
Principe calcul de son nombre d'expression :
A Chaque lettre on affecte un chiffre :
ABCDEFGHIJKLMNOPQRSTUVWXYZ
12345678912345678912345678
Exemple :
A L B E R T S C H W E I T Z E R
1+3+2+5+9+2+1+3+8+5+5+9+2+8+5+9 = 77
Il faut réduire 77 : 7+7 = 14
Il faut encore réduire 14 : 1+4 = 5
ces deux dernières étapes de reduction doivent se faire avec une boucle while, car il peut y avoir une ou plusieurs réductions successives
Il ne reste plus qu'à lire l'interprétation dans le tableau suivant
Programme python :
interprétation du résultat :
Nombre | votre personnalité |
---|---|
1 | C'est l'expression des dirigeants. Votre tendance naturelle est de créer, d'entreprendre, de commander. |
2 | Le deux est sentimental. Vous êtes d'une nature gentille, conciliante, sociable. |
3 | Vous vous exprimez facilement. Votre comportement est gai, amusant, charmant.
|
4 | Vous apparaissez comme quelqu'un de sérieux, travailleur et fiable. |
5 | Vous vous intéressez à tout et pouvez changer plusieurs fois de profession dans votre vie |
6 | Votre comportement est bienveillant, compréhensif et tolérant. |
7 | C'est l'expression des intellectuels, solitaires, réfléchis, un peu perdus dans leurs pensées. |
8 | Vous apparaissez comme une personne volontaire, active, en quête de pouvoir. |
9 | Votre comportement est ouvert, sensible et altruiste. Votre nature est idéaliste et passionnée. |
11 | Vous donnez l'apparence d'une personnalité forte, originale, non conventionnelle. |
22 | C’est donc l’apparence d’une personnalité forte, originale, aux aspirations
anticonventionnelles et aux convictions profondes. |
33 | Il est très rare de vivre la vibration du 33. Se reporter en général à l’expression 6 qui sera vécue d’une façon plus fondamentale, plus responsable. |
On désire compter le nombre de points au jeu du Scrabble
valeurs=[[' '],['A','E','I','L','N','O','R','S','T','U'],['D','G','M'],['B','C','P'],['F','H','V'],[],[],[],['J','Q'],[],['K','W','X','Y','Z']]
Exemple :
>>>Saisir le mot : WAGON >>>Saisir les cases bonus dans l'ordre : d t D Le mot vous rapporte 58 points
Programme python :
Cette fois ci, on donne la liste des points bonnus du plateau:
bonus=["T d T d T", " D t t D ", " D d d D ", "d D d D d", " D D ", " t t t t ", " d d d d ", "T d D d T", " d d d d ", " t t t t ", " D D ", "d D d D d", " D d d D ", " D t t D ", "T d T d T"]
Programme python :
Réécrire le programme pour qu'il fonctionne de la manière suivante :
On remarque une symétrie verticale et horizontale du plateau de jeu, donc le fait de placer le mot horizontalement ou verticalement ne change rien au score. On peut donc éviter cette saisie.
Modifier le programme pour qu'il fonctionne avec la variable bonus suivante :
bonus=["T d T", " D t ", " D d ", "d D d", " D ", " t t ", " d d ", "T d D"]
Programme python :
Fond : Texte : Tables : Thème du langage:
Contenu
sous licence CC BY-NC-SA 3.0
Fabrice Sincère ; version 1.3.5.29
Modifié et adapté par Pascal Hassenforder 08/07/2021
MAJ : 17/11/2022