TP - Chapitre 3 : Langage de programmation Python

N.B. Niveau : Première Générale, enseignement de spécialité NSI (Numérique et Sciences Informatiques)

 

D
É
C
O
N
N
E
C
T
É

Chapitre 3 - Les boucles

Une boucle permet d'exécuter une portion de code plusieurs fois de suite.

L'instruction while

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 :


  
  

L'instruction for

algo 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 :



L'instruction 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 :



Astuce

Si vous connaissez le nombre de boucles à effectuer, utiliser une boucle for.
Autrement, utiliser une boucle while (notamment pour faire des boucles sans fin).

Vos missions

Mission n°1 ★ Réduire et optimiser le script du tour de magie

Constat :

capture image programme

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 boucle
i←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

Code python :

non validé


                
                




Mission n°2 ★ 

Remplacer la boucle while par une boucle for

Code python :

non validé


                
                


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

Code python :

non validé


                
                



Mission n°4 ★
Avec une boucle pour, écrire un script qui compte le nombre de lettres s dans une chaîne de caractères.

Algorithme

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ésultat
Résultat :

Entrer la chaîne : Neymar da Silva Santos
il y a 3 s dans Neymar da Silva Santos

Code python :

non validé


                
                



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 €

Code python :

non validé


                
                

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]

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):

tableau n°4

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 01004
00 01015
00 01106
00 01117
00 110012
00 110113
00 111014
00 111115
01 010020
......
11 111163

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

Code python :

non validé


                
                

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 ;

Code python :

non validé


                
                

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

>>>

non validé 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 :

  • Les 2 premières lignes du code python permettent de générer un nombre entier aléatoire entre 1 et 100
  • Seul le navigateur Mozilla Firefox permet de voir l'évolution des réponses dans la console
  • Code python :

    
    
    

    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.


    Mission Bonus 1 : numérologie

    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 :

    Nombrevotre 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.
    33Il 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.

    Mission Bonus 2 : SCRABBLE

    On désire compter le nombre de points au jeu du Scrabble

    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: