Aller au contenu

Index des sujets 2022

Corrigé sujet 32 - Année : 2022

Sujet 32 - 2022

Exercice 1

1
2
3
4
5
def recherche(elt,tab):
    for i in range(len(tab)-1,-1,-1):
        if elt==tab[i]:
            return i
    return -1

Commentaires

Le sujet demande de rechercher la dernière occurrence, la correction proposée ici parcourt la liste à l'envers et renvoie la première occurrence rencontrée. Il faut donc dans ce cas savoir à écrire un parcours à l'envers à l'aide de range. On peut faire aussi parcourir dans le sens normal jusqu'à la fin et mettre la jour l'indice à chaque fois qu'on rencontre la valeur:

    def recherche(elt,tab):
        indice = -1
        for i in range(len(tab)):
            if tab[i] == elt:
                indice = i
        return indice

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class AdresseIP:

    def __init__(self, adresse):
        self.adresse = adresse

    def liste_octet(self):
        """renvoie une liste de nombres entiers,
           la liste des octets de l'adresse IP"""
        return [int(i) for i in self.adresse.split(".")] 

    def est_reservee(self):
        """renvoie True si l'adresse IP est une adresse
           réservée, False sinon"""
        return self.liste_octet()[3]==0 or self.liste_octet()[3]==0 #(1)

    def adresse_suivante(self):
        """renvoie un objet de AdresseIP avec l'adresse 
           IP qui suit l’adresse self
           si elle existe et False sinon"""
        if self.liste_octet()[3] < 254:
            octet_nouveau = self.liste_octet()[3] + 1
            return AdresseIP('192.168.0.' + str(octet_nouveau)) #(2)
        else:
            return False
  1. Le dernier octet est le 4ème élément (donc celui d'indice 3) de la liste renvoyée par la méthode liste_octet. L'adresse est réservée lorsque ce dernier octect vaut 0 ou 255.
  2. Attention à la conversion de type, pour concaténer le début de l'adresse avec le dernier octet

Attention

La méthode split des chaines de caractères est utilisée sans explications ni exemples dans la méthode liste_octet. Bien comprendre que cette méthode permet de convertir une adresse comme "192.168.0.0" (une chaine de caractères) en [192,168,0,0] (liste d'entiers).