Exercices - fiche 3

Les exercices précédés du symbole sont à faire sur machine, en sauvegardant le fichier si nécessaire.

Les exercices précédés du symbole doivent être résolus par écrit.

Fiche d’exercices sur boucles.

Boucles while

Exercice 1

On considère le programme suivant :

A = 10
while A < 2000 :
    A = A * 2
    A = A + 3
A = A - 5
  1. Donner les dix premières valeurs successives prises par la variable A.
  2. Vérifier avec l’ordinateur et l’onglet variables ou l’explorateur de variables.
  3. Combien a-t-on fait de tours dans la boucle while lorsque le programme se termine ?

Exercice 2

On considère le programme suivant :

t = 1
i = 0
while t < 100 :
    t = t + 2 * i
    i = i + 1
  1. Dresser un tableau d’état faisant apparaître les valeurs successives des variables t et i.
  2. Combien a-t-on fait de tours dans la boucle while quand le programme se termine ?

Exercice 3

Une personne verse en 2017 la somme de 500 € sur un compte bancaire.

Cette somme augmente de 3,2% chaque année.

Écrire un programme qui affiche la somme qui se trouve sur le compte chaque année depuis 2017 jusqu’à ce que cette somme dépasse 1 000 €, sous la forme suivante :

>>> 
En 2018, le capital sera de 516 €.
En 2019, le capital sera de 512.5120000000001 €.
. . .
En 2040, le capital sera de 1031.8178626526687 €.

Exercice 4

On donne ci dessous quatre programmes comportant une boucle while. Ces boucles se terminent-elles ou sont-elles des boucles infinies ?

# Programme 1
nombre = 10
while nombre!=27 :
    nombre = nombre+2
# Programme 2
i = 0
while i<10 :
    print(i+1)
# Programme 3
i = 2
while i<10 :
    i = 0
    i = i+1
# Programme 4
i = 0
while i<1000000 :
    i = i+0.001

Exercice 5

Écrire un programme qui simule le lancer de trois dés et qui recommence jusqu’à ce qu’on obtienne un triple 6, et qui affiche le nombre d’essais qui ont été nécessaires pour obtenir ce résultat, de la manière présentée ci-dessous :

>>> 
J’obtiens 5 4 2 Perdu !
J’obtiens 6 1 6 Perdu !
. . .
J’obtiens 6 6 6 Gagné en 124 essais !
Indication

La fonction randint de la bibliothèque random génère un entier aléatoire compris au sens large entre les deux entiers donnés en argument. Par exemple random(8,18) renvoie un entier aléatoire compris au sens large entre 8 et 18. Pour pouvoir être utilisée, cette fonction doit être importée en tapant par exemple from random import randint en début de programme.


Exercice 6

Le client d’une banque se présente devant un automate pour consulter son relevé de compte.

Pour y avoir accès, il doit saisir son code personnel qui est composé de 4 chiffres. Il devra ensuite confirmer sa saisie.

Écrire un programme qui demande à l’utilisateur de saisir son code, puis de confirmer sa saisie. Si les deux saisies sont différentes, un message d’erreur sera affiché et il devra recommencer, et si au bout de 10 essais il n’a toujours pas réussi, on lui dira que l’accès est refusé.

Boucles for

Exercice 7

Écrire un programme qui affiche 50 fois les phrases suivantes :

>>>
Je ne dois pas bavarder 
Ni discuter
Ni chuchoter
Je ne dois pas bavarder 
Ni discuter
Ni chuchoter
. . .

Exercice 8

Écrire un programme qui affiche la phrase “Je rigole !”, puis “HaHaHa” 50 fois sur une même ligne :

>>>
Je rigole !
HaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHa . . .

Exercice 9

Écrire un programme qui affiche la phrase “Punition d’Albert :”, puis 20 fois la phrase “Je ne dois pas oublier ma trousse.”, puis 20 fois la phrase “Je ne dois pas oublier mon cahier.”, puis la phrase “C’est enfin fini !”.

>>>
Punition d’Albert :
Je ne dois pas oublier ma trousse. 
Je ne dois pas oublier ma trousse. 
    . . .
Je ne dois pas oublier mon cahier. 
Je ne dois pas oublier mon cahier.
    . . .
C’est enfin fini !

Exercice 10

Dans cet exercice, répondre à chaque question en écrivant un programme utilisant une boucle for, puis un programme utilisant une boucle while.

  1. Écrire un programme qui affiche les 20 premiers termes de la table de multiplication par 6.
  2. Écrire un programme qui affiche une suite de 12 nombres dont chacun est égal au triple du précédent.

Exercice 11

Écrire un programme qui affiche un « damier » de croix et de ronds de 40 lignes et 40 colonnes (sans utiliser les opérations sur les chaînes de caractères mais en utilisant deux boucles imbriquées) :

>>>
xoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxo
oxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxox
xoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxo
oxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxox
...
Indication

Pour afficher une chaîne de caractères sans revenir à la ligne, on utilise : print("toto", end="").


Exercice 12

Écrire un programme qui affiche un « rectangle » de croix creux de largeur 20 et hauteur 8 : (sans utiliser les opérations sur les chaînes de caractères) :

>>>
xxxxxxxxxxxxxxxxxxxx
x                  x
x                  x
x                  x
x                  x
x                  x
x                  x
xxxxxxxxxxxxxxxxxxxx

Exercice 13

On considère le script suivant :

for compteur1 in range(1,5,1):
    print("No")
    for compteur2 in range(1,4,1):
        print("Plouf")
    print("Gloub")
print("Yes")
  1. Combien de fois affiche-t-il “No” ? Combien de fois affiche-t-il “Plouf” ?
  2. Combien de fois affiche-t-il “Gloub” ? Combien de fois affiche-t-il “Yes” ?