Aller au contenu

Le scrabble

Important

On rappelle que l'entraînement à la programmation est indispensable pour apprendre à programmer...

Exercice 1

On dispose de la liste suivante:

scrabble = ['A',1,'B',3,'C',3,'D',2,'E',1,'F',4,'G',2,'H',4,
            'I',1,'J',8,'K',10,'L',1,'M',2,'N',1, 'O',1,
            'P',3,'Q',8,'R',1,'S',1,'T',1,'U',1,'V',4,'W',10,
            'X',10,'Y',10,'Z',10]

Chaque lettre de l'alphabet est suivie du nombre de points qui lui est attribué au scrabble.

Écrire une fonction python spécifiée comme suit:

def valeur(lettre):
    """
    lettre -- un caractère pris dans les lettres majuscules.

    renvoie le nombre de points associé (c'est à dire la valeur inscrite dans 
    la liste scrabble juste après la lettre)

    >>> valeur("A")
    1
    >>> valeur("M")
    2
    """
Une réponse

Une réponse possible dans ce fichier jupyter notebook.

Version html du fichier:

Exercice 2

On poursuit l'exercice précédent.

Écrire maintenant une fonction python spécifiée comme suit:

def maxi(liste):
    """
    liste -- liste de lettres majuscules.

    renvoie la lettre qui rapporte le plus grand nombre de points.
    Lorsque plusieurs lettres correspondent à la valeur maximale, 
    la fonction renvoie celle qui a le plus grand indice dans liste.

    >>> maxi(['B', 'A', 'K', 'D'])
    'K'
    >>> maxi(['A', 'E', 'I'])
    'I'
    """
Une réponse

Une réponse possible dans ce fichier jupyter notebook.

Et sa version html:

Exercice 3

On poursuit les exercices précédents.

Écrire maintenant une fonction python spécifiée comme suit:

def valeur_mot(mot):
    """
    mot -- chaîne de caractères constituée de lettres majuscules.

    renvoie le nombre total de points du mot  (en additionnant les valeurs 
    attribuées à chaque lettre du mot)

    >>> valeur_mot("PYTHON")
    20
    >>> valeur_mot("JAVASCRIPT")
    24
    """
Une réponse

Une réponse possible dans ce fichier jupyter notebook.

Et sa version html:

Exercice 4

Écrire une fonction python spécifiée comme suit:

def compte_carac(mot, lettre):
    """
    mot -- liste de caractères ou chaîne de caractères
    lettre -- caractère

    renvoie le nombre d'occurrences de lettre dans mot.

    >>> compte_carac("ARBRE", 'R')
    2
    >>> compte_carac(['N','U','M','E','R','I','Q','U','E'], 'I')
    1
    """
Une réponse

Un code possible:

def compte_carac(mot, lettre):
    """
    mot -- liste de caractères ou chaîne de caractères
    lettre -- caractère

    renvoie le nombre d'occurrences de lettre dans mot.

    >>> compte_carac("ARBRE", 'R')
    2
    >>> compte_carac(['N','U','M','E','R','I','Q','U','E'], 'I')
    1
    """
    effectif = 0
    for x in mot:
        if x == lettre:
            effectif += 1
    return effectif

Exercice 5

Écrire une fonction python spécifiée comme suit:

def verif(jeu, mot, lettre):
    """
    jeu -- liste de lettres majuscules (les lettres dont dispose le joueur)
    mot -- chaîne de caractères (constituée de lettres majuscules, mot que voudrait écrire le joueur) 
    lettre -- une lettre majuscule (lettre disponible sur le plateau de jeu)

    renvoie True si on peut écrire mot avec les lettres de jeu et le caractère lettre, 
    renvoie False sinon.

    >>> verif(['A','R','B','E'], "ARBRE", 'R')
    True
    >>> verif(['A','R','B','E'], "ARBRE", 'E')
    False
    """
Une réponse

Un code possible ci-dessous. On utilise la fonction compte_carac() de l'exercice précédent.

def verif(jeu, mot, lettre):
    """
    jeu -- liste de lettres majuscules (les lettres dont dispose le joueur)
    mot -- chaîne de caractères (constituée de lettres majuscules, mot que voudrait écrire le joueur) 
    lettre -- une lettre majuscule (lettre disponible sur le plateau de jeu)

    renvoie True si on peut écrire mot avec les lettres de jeu et le caractère lettre, 
    renvoie False sinon.

    >>> verif(['A','R','B','E'], "ARBRE", 'R')
    True
    >>> verif(['A','R','B','E'], "ARBRE", 'E')
    False
    """
    for x in mot:
        if x == lettre:
            if compte_carac(mot, x) != compte_carac(jeu, x) + 1:
                return False
        else:
            if compte_carac(mot, x) != compte_carac(jeu, x):
                return False
    return True