Aller au contenu

Index des sujets 2022

Corrigé sujet 07 - Année : 2022

Sujet 07 - 2022

Exercice 1

1
2
3
4
5
6
7
8
def conv_bin(n):
    liste_bit=[n%2]
    n=n//2
    while n!=0:
        liste_bit.append(n%2)
        n=n//2
    liste_bit.reverse()
    return liste_bit,len(liste_bit)

Commentaires

  1. L'exemple de l'énoncé est mal choisi, en effet l'écriture binaire de 9 : \(9_{10}=1001_2\) étant un palindrome (identique à l'envers), cet exemple ne permet pas de détecter un éventuel oubli de l'utilisation de reverse.
  2. Dans la correction, l'initialisation liste_bit=[n%2] permet de traiter le cas de 0.

Exercice 2

1
2
3
4
5
6
7
8
9
def tri_bulles(T):
    n = len(T) 
    for i in range(len(T)-1,0,-1): #(1)
        for j in range(i):
            if T[j] > T[j+1]: #(2)
                temp = T[j] #(3)
                T[j] = T[j+1] 
                T[j+1] = temp
    return T
  1. On parcourt la liste à l'envers à l'aide de l'indice i (le dernier élément de T a pour indice len(T)-1)
  2. On teste si deux éléments consécutifs ne sont pas dans le bon ordre
  3. Si oui, alors on les échange

Attention

  • Cet exercice demande de coder le tri à bulles qui n'est pourtant pas au programme. Son principe est de faire remonter les plus petits éléments de la liste vers le début en les échangeant avec leur voisins.
  • Les lignes 6,7 et 8 permettant d'échanger T[j] et T[j+1] en utilisant la variable temporaire temp, on pourrait écrire plus simplement : T[j],T[j+1]=T[j+1],T[j]
  • Le return T peut laisser penser qu'on veut récupérer la liste triée, alors que T est modifiée et triée par la fonction puisque mutable.