Aller au contenu

Exercices sur la boucle for ... in⚓︎

Exercice 1

On donne une liste d'acteurs :

liste_acteurs = ['Tahar', 'Omar', 'Guillaume', 'Swann', 'Alex', 'Roschdy']

Utilisez cette liste pour produire la sortie suivante:

Tahar a eu le César du meilleur acteur
Omar a eu le César du meilleur acteur
Guillaume a eu le César du meilleur acteur
Swann a eu le César du meilleur acteur
Alex a eu le César du meilleur acteur
Roschdy a eu le César du meilleur acteur

Correction
1
2
3
4
liste_acteurs = ['Tahar', 'Omar', 'Guillaume', 'Swann', 'Alex', 'Roschdy']

for acteur in liste_acteurs:
    print(acteur, 'a eu le César du meilleur acteur')

❤ Concaténation de caractères ❤

Il est possible de coller (le vrai mot est concaténer) deux chaînes de caractères par l'opérateur + :

>>> "a" + "b"
'ab'

Exercice 2

Dans l'extrait de code suivant:

  • chaine est une variable initialisée avec un str vide : "";
  • on veut qu'en sortie de programme cette variable contienne la valeur 'bravo'.

L'idée est d'ajouter une par une les lettres à la variable chaine.

À l'exécution, le programme doit afficher uniquement bravo.

Compléter le code.

1
2
3
4
chaine = ""
for ... in ['b', 'r', 'a', 'v', 'o']:
    ...
print(chaine)

Cette variable chaine est appelée un accumulateur.

Correction
1
2
3
4
5
chaine = ''
for lettre in ['b', 'r', 'a', 'v', 'o']:
    chaine = chaine + lettre #(1)

print(chaine)
  1. Ou bien chaine += lettre

Exercice 3

En Python, la fonction ord renvoie le code Unicode d'un caractère et la fonction chr le contraire: elle renvoie le caractère correspondant à un code Unicode.

Par exemple:

>>> ord('a')
97
>>> chr(97)
'a'

Voici une liste contenant les codes Unicode des lettres d'un mot secret... À vous d'écrire un programme où en sortie, la variable mot_secret contiendra la chaîne de caractères de ce mot.

1
2
3
4
mystere = [111, 107, 44, 32, 98, 105, 101, 110, 32, 106, 111, 117, 233]
mot_secret = ""

# à vous !
Correction
1
2
3
4
5
6
7
8
mystere = [111, 107, 44, 32, 98, 105, 101, 110, 32, 106, 111, 117, 233]
mot_secret = ""

for nombre in mystere:
    lettre = chr(nombre)
    mot_secret = mot_secret + lettre

print(mot_secret)

Exercice 4

On souhaite calculer la somme des 1000 premiers nombres entiers naturels, c'est-à-dire:

\(1+2+3+4+5+ \dots +999+1000\)

Écrire un programme avec une variable somme accumulateur (comme à l'exercice 3) qui contiendra la valeur souhaitée en fin de programme.

Correction
1
2
3
4
somme = 0
for k in range(1001):
    somme += k
print(somme)

Exercice 5

Calculer \(1\times 2 \times 3 \times \dots 99 \times 100\).

Correction
1
2
3
4
produit = 1
for k in range(1,101):
    produit = produit * k
print(produit)  

Exercice 6

Proposer un code qui écrit la table de multiplication de 7, de 8 et de 9.

La sortie doit ressembler à :

7*1 = 7

7*2 = 14

...    
...

9*9 = 81    

Correction
1
2
3
for a in range(7, 10):
    for b in range(1, 10):
        print(a, '*', b, '=', a*b)

Exercice 7

Sur un jeu d'échecs, les cases sont repérées par une lettre (de A jusqu'à H) et par un chiffre (de 1 jusqu'à 8).

Les cases sont donc A1, A2, A3, ..., H7, H8.

Proposer un code qui écrit toutes les cases possibles.

Correction
1
2
3
4
for lettre in 'ABCDEFGH':
    for chiffre in '12345678':
        case = lettre + chiffre
        print(case)

Autre solution utilisant la conversion d'un entier en chaine de caractères, grâce à la fonction str :

1
2
3
4
for lettre in 'ABCDEFGH':
    for chiffre in range(1, 9):
        case = lettre + str(chiffre)
        print(case)

Exercice 8

Travail sur ipythonblocks : image

Exercice à faire sur Capytale : https://capytale2.ac-paris.fr/web/c/8869-1863952

Correction Ex. 1
1
2
3
4
5
grid = BlockGrid(10, 10, fill=(125,234,231))

for k in range(10):
    grid[k,2].set_colors(0,0,0)
grid.show()
Correction Ex. 2
1
2
3
4
5
6
7
grid = BlockGrid(10, 10, fill=(125, 234, 231))

for col in range(0, 10, 2):
    for lig in range(10):
        grid[lig, col].set_colors(0, 0, 0)

grid.show()
Correction Ex. 3
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
grid = BlockGrid(10, 10, fill=(125,234,231))

for col in range(0, 10, 2):
    for lig in range(0, 10, 2):
        grid[lig, col].set_colors(0, 0, 0)

for col in range(1, 10, 2):
    for lig in range(1, 10, 2):
        grid[lig, col].set_colors(0, 0, 0)        

grid.show()

ou bien (plus difficile):

1
2
3
4
5
6
7
8
grid = BlockGrid(10, 10, fill=(125,234,231))

for x in range(10):
    for y in range(10):
        if (x + y) % 2 == 1: #on teste si la somme abscisse + ordonnée est impaire
            grid[x, y].set_colors(0, 0, 0)     

grid.show()
Correction Ex. 4
1
2
3
4
5
6
grid = BlockGrid(10, 10, fill=(125,234,231))

for y in range(10):
    for x in range(y, 10):
        grid[x, y].set_colors(0, 0, 0)     
grid.show()

Exercice 9

Dans ma trousse je dispose de 5 feutres de couleur :

  • jaune (J)
  • vert (V)
  • noir (N)
  • bleu (B)
  • orange (O)

Pour un exercice, je dois colorier 3 pastilles en choissant sans aucune contrainte des couleurs parmi les 5 disponibles. Je peux tout colorier en jaune (JJJ) ou bien colorier la 1ère en orange, la 2ème en bleu, la 3ème en vert (OBV )

Faire afficher la totalité des combinaisons possibles.

Correction
1
2
3
4
5
couleurs = 'JVNBO'
for c1 in couleurs:
    for c2 in couleurs:
        for c3 in couleurs:
            print(c1 + c2 + c3)