Aller au contenu

Correction de l'épreuve 46

Sujet (PDF intégré)

Exercice 1

def compte_occurrences(x, tab):
    nb = 0
    for element in tab:
        if element == x:
            nb += 1
    return nb

Exercice 2

pieces = [1, 2, 5, 10, 20, 50, 100, 200]

def rendu_monnaie(somme_due, somme_versee):
    '''Renvoie la liste des pièces à rendre pour rendre la monnaie
    lorsqu'on doit rendre somme_versee - somme_due'''
    rendu = [] 
    a_rendre = somme_versee - somme_due 
    i = len(pieces) - 1
    while a_rendre > 0: 
        while pieces[i] > a_rendre:
            i = i - 1
        rendu.append(pieces[i]) 
        a_rendre = a_rendre - pieces[i] 
    return rendu

Commentaires éventuels

En soit l'épreuve n'est pas très difficile, mais il y a un petit piège sur la question 2. En effet, il faut bien faire attention à ce que la liste des pièces soit triée dans l'ordre décroissant. Sinon, on ne peut pas rendre la monnaie de manière optimale.

Précédent | Suivant