Partie 1 : Tableaux 1D - Accès par indice
Exercice 1.1 : Gestion d’un inventaire de jeu vidéo
Vous développez un jeu de rôle où le personnage possède un inventaire de 10 emplacements. Chaque emplacement contient un objet représenté par une chaîne de caractères.
inventaire = ["épée", "potion", "bouclier", "vide", "clé", "vide", "arc", "carte", "vide", "torche"]
Exemple 1 : Accéder à un élément
# Pour afficher l'objet à l'indice 2
print(inventaire[2]) # Affiche : bouclier
Exemple 2 : Modifier un élément
# Pour remplacer l'objet à l'indice 3
inventaire[3] = "diamant"
print(inventaire[3]) # Affiche : diamant
Exemple 3 : Échanger deux éléments
# Pour échanger les éléments aux indices 1 et 5
temp = inventaire[1]
inventaire[1] = inventaire[5]
inventaire[5] = temp
Questions :
- Affichez l’objet situé à l’emplacement 4 de l’inventaire.
- Le joueur ramasse un “parchemin”. Remplacez le premier emplacement “vide” par “parchemin”.
- Le joueur utilise sa potion (indice 1). Remplacez-la par “vide”.
- Échangez les objets aux emplacements 0 et 6 (épée et arc).
- Créer une fonction
echangequi prend une listeLainsi que 2 indicesietjpour paramètres, et qui modifie la listeLen permutant les objets aux rangsietj. Cette fonction n’aura pas de valeur de retour. - Ecrire l’instruction qui échange les objets aux emplacements 0 et 6, mais cette fois-ci, en utilisant la fonction
echange.
Exercice 1.2 : Thermomètre intelligent
Un thermomètre enregistre les températures de chaque heure de la journée (24 valeurs).
temperatures = [12, 11, 10, 10, 9, 9, 11, 14, 17, 20, 23, 25, 27, 28, 27, 25, 22, 19, 17, 15, 14, 13, 13, 12]
Exemple : Calculer un écart
# Pour calculer l'écart entre deux températures
ecart = temperatures[10] - temperatures[3]
print("L'écart est de", ecart, "degrés")
Exemple : Augmenter une valeur
# Pour augmenter de 3 degrés la température à l'indice 5
temperatures[5] = temperatures[5] + 3
# ou plus court :
temperatures[5] += 3
Questions :
- Affichez la température à 14h (indice 14).
- Une erreur de capteur s’est produite à 8h. Modifiez la valeur à l’indice 8 pour la remplacer par 16.
- Pourrait-on utiliser la fonction
echange? Si oui, écrire l’instruction correspondante. - Calculez l’écart entre la température maximale (indice 13) et minimale (indice 5).
- Augmentez de 2 degrés la température de minuit (indice 0).
Partie 2 : Tableaux 1D - Parcours par élément et par indice
Exercice 2.1 : Analyse d’une partie de Scrabble
Un joueur de Scrabble possède les lettres suivantes dans son chevalet :
chevalet = ['A', 'E', 'R', 'T', 'I', 'N', 'S']
Exemple 1: Parcours par élément
# Afficher chaque lettre
for lettre in chevalet:
print(lettre)
Exemple 2: Compter des éléments
# Compter les 'E' dans le chevalet
compteur = 0
for lettre in chevalet:
if lettre == 'E':
compteur += 1
print("Il y a", compteur, "lettre E")
Exemple 3: Vérifier une condition
# Vérifier si le chevalet contient un 'A'
if 'A' in chevalet:
print("Il y a un A !")
else:
print("Pas de A")
Questions avec parcours par élément :
- Affichez toutes les lettres du chevalet, une par ligne, en utilisant une boucle
for lettre in chevalet. - Comptez combien de voyelles (A, E, I, O, U, Y) se trouvent dans le chevalet.
- Affichez “BINGO!” si le chevalet contient au moins une lettre ‘S’, sinon affichez “Pas de S”.
- Ecrire une fonction
comptequi prend une listeLainsi qu’une lettreVen paramètre, et qui retourne le nombre de fois où cette lettre est présente dans la liste. - Ecrire l’instruction qui appelle cette fonction pour déterminer le nombre de
Edans le chevalet['A', 'E', 'R', 'T', 'I', 'N', 'S']
Exercice 2.2: Parcours par indice
Exemple 1: afficher l’indice et l’élément
# Afficher chaque lettre avec sa position
for i in range(len(chevalet)):
print("Position", i, ":", chevalet[i])
Exemple 2: Modifier en parcourant
# Remplacer tous les 'A' par des '*'
for i in range(len(chevalet)):
if chevalet[i] == 'A':
chevalet[i] = '*'
Exemple 3: Créer un nouveau tableau
# Créer un tableau avec uniquement les voyelles
voyelles_trouvees = []
for i in range(len(chevalet)):
if chevalet[i] in ['A', 'E', 'I', 'O', 'U', 'Y']:
voyelles_trouvees.append(chevalet[i])
print(voyelles_trouvees)
Questions avec parcours par indice :
- Affichez chaque lettre avec sa position : “Position 0 : A”, “Position 1 : E”, etc.
- Remplacez toutes les voyelles par des ‘*’ en parcourant le tableau par indice.
- Créez un nouveau tableau contenant uniquement les consonnes en utilisant les indices.
Partie 3 : Tableaux 2D - Parcours par élément et par indice
Exercice 3.1 : Grille de Morpion
Parcours par élément
Une grille de morpion est représentée par un tableau 2D de 3×3 :
morpion = [
['X', 'O', 'X'],
['O', 'X', ' '],
[' ', ' ', 'O']
]
Exemple 1: afficher les éléments
for ligne in morpion:
for case in ligne:
print(case, end=' ')
print() # retour à la ligne
# Affiche toutes les valeurs ligne par ligne:
X | O | X |
O | X | |
| | O |
Exemple 2: Compter les éléments
# Compter les 'X'
compteur = 0
for ligne in morpion:
for case in ligne:
if case == 'X':
compteur += 1
print("Nombre de X :", compteur)
Questions:
- Affichez tous les ‘X’ de la grille, ligne par ligne en utilisant deux boucles
for. - Comptez le nombre de cases vides (contenant ’ ‘).
- Déterminez qui a le plus de coups joués (X ou O).
parcours par indice :
Exemple 1: Parcours par indice (tableau 2D)
# Afficher la grille avec les indices
for i in range(len(morpion)):
for j in range(len(morpion[i])):
print(morpion[i][j], end=' ')
print()
Exemple 2: Accéder à un élément précis
# Afficher et modifier un élément
print("Case [0][1] :", morpion[0][1]) # Affiche 'O'
morpion[0][1] = 'X' # Modifier la case
Exemple 3: Vérifier une ligne
# Vérifier si la ligne 0 contient trois symboles identiques
ligne = morpion[0]
if ligne[0] == ligne[1] == ligne[2] and ligne[0] != ' ':
print("La ligne 0 est gagnante !")
Questions:
- Le joueur O joue en position [1][2] (ligne 1, colonne 2). Ecrire l’instruction qui modifie la grille.
- Quelles sont les coordonnées
morpion[i][j]pour chacune des cases? Dessinez sur votre cahier une matrice pour placer les coordonnées[i][j]dans chaque case.. - Ecrire les instructions qui verifient si la première ligne contient trois symboles identiques (condition de victoire).
- Ecrire une fonction
ligne_Xqui prend pour paramètre une matriceMcomme la grille de morpion (3*3).Mcontient dans chaque case'X','O', ou''. Cette fonction retourneraTruesi l’une des lignes est remplie avec trois'X'.
Exercice 3.2 : Grille de Sudoku (9×9)
Voici une grille de Sudoku partiellement remplie :
sudoku = [
[5, 3, 0, 0, 7, 0, 0, 0, 0],
[6, 0, 0, 1, 9, 5, 0, 0, 0],
[0, 9, 8, 0, 0, 0, 0, 6, 0],
[8, 0, 0, 0, 6, 0, 0, 0, 3],
[4, 0, 0, 8, 0, 3, 0, 0, 1],
[7, 0, 0, 0, 2, 0, 0, 0, 6],
[0, 6, 0, 0, 0, 0, 2, 8, 0],
[0, 0, 0, 4, 1, 9, 0, 0, 5],
[0, 0, 0, 0, 8, 0, 0, 7, 9]
]
Les cases vides sont représentées par 0.
Exemple : Compter les cases vides
# Compter les 0 dans toute la grille
compteur = 0
for i in range(len(sudoku)):
for j in range(len(sudoku[i])):
if sudoku[i][j] == 0:
compteur += 1
print("Nombre de cases vides :", compteur)
Exemple : Afficher une ligne
# Afficher la ligne 0
for j in range(len(sudoku[0])):
print(sudoku[0][j], end=' ')
print()
Exemple : Afficher une colonne
# Afficher la colonne 2
for i in range(len(sudoku)):
print(sudoku[i][2], end=' ')
print()
Exemple : Modifier une case
# Remplacer le 0 en position [0][2] par 4
sudoku[0][2] = 4
print("Nouvelle valeur :", sudoku[0][2])
Exemple : Extraire un bloc 3×3
# Extraire le bloc en haut à gauche (lignes 0-2, colonnes 0-2)
bloc = []
for i in range(0, 3): # lignes 0, 1, 2
ligne_bloc = []
for j in range(0, 3): # colonnes 0, 1, 2
ligne_bloc.append(sudoku[i][j])
bloc.append(ligne_bloc)
print(bloc)
Exemple : Vérifier les doublons dans une ligne
# Vérifier si la ligne 1 contient des doublons (sans compter les 0)
ligne = sudoku[1]
nombres = []
for valeur in ligne:
if valeur != 0:
if valeur in nombres:
print("Doublon détecté !")
else:
nombres.append(valeur)
Questions avec parcours par indice :
- Comptez le nombre de cases vides (valeur 0) dans toute la grille.
- Affichez tous les chiffres de la première ligne (ligne d’indice 0).
- Affichez tous les chiffres de la cinquième colonne (colonne d’indice 4).
- Remplacez le 0 en position [0][2] par le chiffre 4.
- Ecrire une fonction
doublons, qui prend en paramètre une grille de sudokuG, ainsi qu’un numero de lignei, et qui retourne un booléenTrue/False. selon si la ligneicontient des doublons. (sans compter les 0). - Appeler la fonction
doublonspour vérifier si la première ligne contient des doublons. - Créez une fonction
blocqui extrait l’un des 9 blocs 3×3, n’importe où dans la grille. (par exemple, le bloc en haut à gauche : lignes 0-2, colonnes 0-2), à partir des indicesi,jde départ (coin supérieur gauche du bloc).
Conseils généraux
- Testez votre code progressivement : ne cherchez pas à tout résoudre d’un coup.
- Utilisez des fonctions pour organiser votre code et le rendre réutilisable.
- Affichez des résultats intermédiaires avec
print()pour vérifier votre logique. - N’oubliez pas : les indices commencent à 0 en Python !
Suite en projet:
