Aller au contenu

Index des sujets 2022

Corrigé sujet 01 - Année : 2022

Sujet 01 - 2022

Exercice 1

1
2
3
4
5
6
def recherche(caractere,mot):
    occurrence = 0
    for c in mot:
        if c == caractere:
            occurrence += 1
    return occurrence

Commentaires

C'est un exercice classique de parcours d'un itérable en comptant les occurrences d'apparition d'une valeur. Un parcours par élément suffit, les indices des occurrences n'étant pas utilisées.

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Pieces = [100,50,20,10,5,2,1]
def rendu_glouton(arendre, solution=[], i=0):
    if arendre == 0:
        return solution #(1)
    p = Pieces[i]
    if p <= arendre : #(2)
        solution.append(p)
        return rendu_glouton(arendre - p, solution, i)
    else :
        return rendu_glouton(arendre, solution, i+1) #(3)
  1. Lorsqu'il n'y a plus rien à rendre on renvoie la solution
  2. Si la pièce est plus petite que la somme à rendre on l'ajoute à la solution et on diminue la somme à rendre
  3. La pièce dépasse la somme à rendre, on relance le processus en regardant la pièce suivante dans la liste

Attention

  • Le code fourni utilise un objet mutable (une liste) comme paramètre par défaut d'une fonction :
    def rendu_glouton(arendre, solution=[], i=0):
    
    C'est une très mauvaise pratique car source d'erreurs, en effet la variable solution étant mutable elle est modifiée par la fonction lors d'un premier appel et ne sera donc plus vide lors des appels suivants. Pour constater le problème, faire plusieurs appels à cette fonction sans spécifier les arguments ayant des valeurs par défaut. Pour une solution à ce problème, on pourra par exemple consulter ce site