Exercice 5 - Questions 1 à 3 · Bac Numérique et Sciences Informatiques Métropole 2 remplacement 2022
Thème : Mise au point des programmes : bugs, assertions et tests · Tiré du sujet Métropole France 2 remplacement (2022)
Énoncé
EXERCICE 5 (4 points)
Cet exercice porte sur la programmation de base en Python et sur la récursivité.
Le Scrabble est un jeu de société qui se joue à plusieurs joueurs. Chaque joueur pioche des jetons sur lesquels sont inscrites une lettre majuscule et sa valeur.
Le joueur propose ensuite un mot qu'il dispose sur un plateau de jeu en plaçant un jeton par case.
Certaines cases permettent une bonification.
1.
Lorsqu'on pose un mot sur des cases ne présentant aucune bonification, on calcule le score en additionnant la valeur des lettres qui composent le mot.
vaut 10 points.
Voici le code d'une fonction calculer_score_sans_bonif qui a pour paramètre une chaîne de caractères mot et qui renvoie le score du mot lorsqu'il n'y a pas de bonification.
def calculer_score_sans_bonif(mot):
1 scrabble = {"A":1,"B":3,"C":3,"D":2,"E":1,"F":4,"G":2,
2 "H":4, "I":1, "J":8, "K":10,"L":1,"M":2,"N":1,"O":1,
3 "P":3, "Q":8, "R":1,"S":1,"T":1,"U":1,"V":4,"W":10,
4 "X":10,"Y":10, "Z":10}
5 score = 0
7 for k in range(len(mot)):
8 score = scrabble[mot[k]]
9 return score
Une erreur s'est glissée dans le corps de la fonction entre les lignes 5 et 9 incluses.
Indiquer la ligne à modifier et corriger l'erreur.
2.
Sur certaines cases est indiquée la bonification "lettre compte double" ou "lettre compte triple".
Exemple:
Le score obtenu est de 12.
La fonction calculer_score_avec_bonif a pour paramètres:
une chaîne de caractères mot
une liste bonif de même longueur que mot précisant pour chaque lettre la bonification correspondante.
Cette fonction renvoie le score du mot en tenant compte des bonifications.
Dans l'exemple précédent on appelle calculer_score_avec_bonif("JEU", [1, 3, 1]) et on obtient 12.
1 def calculer_score_avec_bonif(mot, bonif):
2 scrabble={"A":1,"B":3,"C":3,"D":2,"E":1,"F":4,"G":2,
3 "H":4, "I":1, "J":8, "K":10,"L":1,"M":2,"N":1,"O":1,
4 "P":3, "Q":8, "R":1,"S":1,"T":1,"U":1,"V":4,"W":10,
5 "X":10,"Y":10, "Z":10}
6 score = 0
7 for k in range(len(mot)):
8 score = # A compléter
9 return score
Recopier et compléter la ligne incomplète (ligne 8):
3.
Lucien joue une partie avec ses grands-parents. Avec le tirage B A O L E L N, il a composé une liste de mots: BAL, NOBLE, ANE, BALLE, LOBE. Il souhaite mettre la lettre B sur une case "lettre compte triple", mais pour cela le B doit être la 3 e lettre du mot qu'il doit poser.
(a)
Ecrire une fonction mot_lettre_position qui a pour paramètres:
une liste de mots liste
un caractère c
une position i (la position 2 correspond à la 3 e lettre)
et qui renvoie la liste de tous les mots qui sont dans liste et qui ont le caractère c en position i.
(b)
Quel appel Lucien doit-il effectuer pour trouver les solutions à son problème ?

Corrigé
Corrigé proposé par AprenAI (non officiel)
1. Indiquer la ligne à modifier
Réponse : 8
1. Corriger l'erreur
Réponse : ```python score = score + scrabble[mot[k]] ``` ```python score += scrabble[mot[k]] ```
2. Recopier et compléter la ligne incomplète
Réponse : ```python score = score + scrabble[mot[k]] * bonif[k] ``` ```python score += scrabble[mot[k]] * bonif[k] ```
Les réponses des 2 questions restantes et l’explication pas à pas sont réservées aux membres Premium. Premium
Résous-le ici : correction automatique, indices et corrigé détaillé.
‹ Exercice 2 - Mise au point de programmes et tests · Métropole 2026 (sujet 2) · Exercice 4 - Échange d'éléments · Métropole Candidat libre 2021 (sujet 2) ›