Aller au contenu

Questions : boucles bornées

1. Affichage

Info

  • L'instruction print('a') affiche le caractère a et passe à la ligne suivante.
  • L'instruction print('a', end = ' ') affiche le caractère 'a' suivi d'un espace et ne passe pas à la ligne.

Question 1.1

Question

Parmi les 4 boucles suivantes, lesquelles permettent d'afficher sur une seule ligne les entiers de 1 à 10, séparés par un espace et rangés dans l'ordre croissant ?

1 2 3 4 5 6 7 8 9 10 

Boucle A :

for i in range(10):
    print(i)

Boucle B :

for i in range(10):
    print(i, end = ' ')

Boucle C :

for i in range(1, 11):
    print(i, end = ' ')

Boucle D :

for i in range(10):
    print(i + 1, end = ' ')

  • A
  • B
  • C
  • D
  • A
  • B
  • C
  • D

Parmi les propositions, celles qui conviennent consistent :
- soit à faire varier i de 1 à 10 (range(1,11)) et afficher i;
- soit à faire varier i de 0 à 9 (range(10)) et afficher i + 1.

Question 1.2

Question

mots = ['système', 'systématique', 'systémique']

Parmi les 4 boucles suivantes, lesquelles permettent d'afficher chaque mot de la liste mots ainsi que son nombre de lettres ?

système comporte 7 lettres
systématique comporte 12 lettres
systémique comporte 10 lettres

Boucle A :

for i in range(len(mots)):
    print(mots[i], "comporte", i, "lettres")

Boucle B :

for mot in mots:
    print(mot, "comporte", len(mot), "lettres")

Boucle C :

for mot in mots:
    print(mots[i], "comporte", len(mots[i]), "lettres")

Boucle D :

for i in range(len(mots)):
    print(mots[i], "comporte", len(mots[i]), "lettres")

  • A
  • B
  • C
  • D
  • A
  • B
  • C
  • D

La solution B parcourt directement les éléments de la liste mots et affiche leur valeur et leur nombre de lettres, à l'aide de la fonction len().
La solution D parcourt la liste à l'aide des indices des éléments, et affiche leur valeur et leur nombre de lettres.

2. Somme

Question 2.1

Question

On donne la liste de nombres suivante :

nombres = [12, 34, 56, 78, 98, 76, 54, 32, 10]
Parmi les 4 programmes suivants, lesquels permettent d'afficher la somme des valeurs de la liste nombres ?

Programme A :

for i in range(len(nombres)):
    somme = 0
    somme =  somme + nombres[i]
print(somme)

Programme B :

somme = 0
for i in range(len(nombres)):
    somme =  somme + nombres[i]
print(somme)

Programme C :

somme = 0
for valeur in nombres:
    somme =  somme + valeur
    print(somme)   

Programme D :

somme = 0
for valeur in nombres:
    somme =  somme + valeur
print(somme)   

  • A
  • B
  • C
  • D
  • A
  • B
  • C
  • D

La valeur de la variable somme est à initialiser à 0 avant le parcours de la liste de nombres.
La solution B parcourt la liste à l'aide des indices des éléments, et ajoute chacun d'eux à la variable somme.
La solution D parcourt directement les éléments de la liste et ajoute chacun d'eux à la variable somme.
Enfin, l'affichage de la somme n'est à réaliser qu'après le parcours complet de la liste de valeurs.

Question 2.2

Question

Parmi les 4 programmes suivants, lequel permet d'afficher la somme des carrés des entiers de 1 à 10 ?

Programme A :

for i in range(11):
    print(i**2)

Programme B :

somme = 0
for i in range(1, 10):
    somme = somme + i**2
print(somme)

Programme C :

somme = 0
for i in range(1, 11):
    somme = somme + i**2
print(somme)

Programme D :

somme = 0
for i in range(11):
    somme = i**2
print(somme)

  • A
  • B
  • C
  • D
  • A
  • B
  • C
  • D

La valeur de la variable somme est à initialiser à 0 avant le parcours de la liste de nombres.
La solution C parcourt la liste des entiers de 1 à 10 compris, et ajoute le carré de chacun d'eux à la variable somme.
Enfin, l'affichage de la somme n'est à réaliser qu'après le parcours complet des dix entiers.

3. Calculs en boucle

Question 3.1

Question

Quelle serait la valeur de la variable total à l'issue de l'exécution de ces instructions ?

total =  0
for i in range(4):
    total = total + 3
  • 6
  • 12
  • 14
  • 30
  • 6
  • 12
  • 14
  • 30

i prend les valeurs 0 à 3, soit 4 valeurs.
Pour chaque valeur de i, la variable total est augmentée de la quantité 3.
Finalement, total vaut 0 + 4*3 = 12

Question 3.2

Question

Quelle serait la valeur de la variable total à l'issue de l'exécution de ces instructions ?

total =  0
for i in range(4):
    total = total + i       
  • 6
  • 12
  • 14
  • 30
  • 6
  • 12
  • 14
  • 30

i prend les valeurs 0 à 3. Pour chaque valeur de i, la variable total est augmentée de la valeur de i.
Finalement, total vaut 0 + 0 + 1 + 2 + 3 = 6.

Question 3.3

Question

Quelle serait la valeur de la variable total à l'issue de l'exécution de ces instructions ?

total =  0
for i in range(4):
    total = total + i**2
  • 6
  • 12
  • 14
  • 30
  • 6
  • 12
  • 14
  • 30

i prend les valeurs 0 à 3.
Pour chaque valeur de i, la variable total est augmentée de la valeur de i2.
Finalement, total vaut 0 + 1 + 4 + 9 = 14

4. Boucle avec une condition

Question 4.1

Question

On donne la liste de nombres suivante :

nombres = [12, 34, 56, 78, 90, 12, 34, 56, 78]
Quelle serait la valeur de la variable reponse à l'issue de l'exécution de ces instructions ?

cible =  34
reponse = -1
for i in range(len(nombres)):
    if nombres[i] == cible:
        reponse = i
  • -1
  • 1
  • 2
  • 6
  • -1
  • 1
  • 2
  • 6

La valeur cible 34 est présente deux fois dans le tableau, donc la condition if nombres[i] == cible est vérifiée deux fois. La variable reponse est donc affectée deux fois. En fin de boucle, la valeur de la variable est celle de la dernière affectation, donc l'indice de la dernière occurrence de 34 dans nombres.

Question 4.2

Question

On donne la liste de nombres suivante :

nombres = [12, 34, 56, 78, 90, 12, 34, 56, 78]
Quelle serait la valeur de la variable reponse à l'issue de l'exécution de ces instructions ?

cible =  34
reponse = 0
for nombre in nombres:
    if nombre == cible:
        reponse = reponse + 1
  • 0
  • 1
  • 2
  • 6
  • 0
  • 1
  • 2
  • 6

La valeur cible 34 est présente deux fois dans le tableau, donc la condition if nombres == cible est vérifiée deux fois. La variable reponse est donc incrémentée deux fois. En fin de boucle, la valeur de la variable initialisée à 0 est donc 2.

5. Tracés en boucle

Les tracés suivants ont été réalisés dans un environnement Jupyter, à l'aide du module mobilechelonian qui permet d'utiliser l'essentiel des méthodes liées à la tortue. Pour exécuter les codes dans un notebook Jupyter, les instructions sont à précéder de :
from mobilechelonian import Turtle.

Dans un environnement standard on pourra utiliser le module turtle, avec quelques adaptations du code.

Question 5.1

Question

Parmi les boucles suivantes, laquelle permet de faire tracer à la tortue la figure ci-dessous ?

hexagone

Boucle A :

t = Turtle()
for i in range(6) :
    t.forward(100)
    t.left(60)

Boucle B :

t = Turtle()
for i in range(7) :
    t.forward(100)
    t.left(60)

Boucle C :

t = Turtle()
for i in range(6) :
    t.forward(100)
    t.left(120)

Boucle D :

t = Turtle()
for i in range(7) :
    t.forward(100)
    t.left(120)

  • A
  • B
  • C
  • D
  • A
  • B
  • C
  • D

La figure comporte 6 côtés et range(6) génèrera les entiers de 0 à 5, soit 6 entiers. Les angles "internes" de la figure sont de 120°, la tortue doit donc pivoter de 180 - 120 = 60° entre 2 tracés.

Question 5.2

Question

Parmi les boucles suivantes, laquelle permet de faire tracer à la tortue la figure ci-dessous ?

étoile

Le programme commence par les instructions suivantes :

t = Turtle()
# déplacement sans tracé
t.penup()
t.setposition(75, 150)
t.pendown()
Puis se termine par l'une des boucles suivantes :

Boucle A :

for i in range(5) :
        t.forward(250)
        t.right(72)

Boucle B :

for i in range(5) :
        t.forward(250)
        t.right(144)

Boucle C :

for i in range(6) :
        t.forward(250)
        t.left(36)

Boucle D :

for i in range(6) :
        t.forward(250)
        t.left(72)

  • A
  • B
  • C
  • D
  • A
  • B
  • C
  • D

La figure comporte 5 côtés et range(5) génèrera les entiers de 0 à 4, soit 5 entiers. Les angles "internes" des pointes de l'étoile sont de 36°, la tortue doit donc pivoter de 180 - 36 = 144° entre 2 tracés.