Aller au contenu

Ep 39

le document

l'algorithme

Issue de : 23-NSI-37⚓

EXERCICE 1⚓

Écrire une fonction recherche qui prend en paramùtres elt un nombre entier et tab un tableau de nombres entiers (type list), et qui renvoie l’indice de la derniùre occurrence de elt dans tab si elt est dans tab et None sinon.

Exemples :

🐍 Script Python
>>> recherche(1, [2, 3, 4])
None
>>> recherche(1, [10, 12, 1, 56])
2
>>> recherche(1, [1, 0, 42, 7])
0
>>> recherche(1, [1, 50, 1])
2
>>> recherche(1, [8, 1, 10, 1, 7, 1, 8])
5

RĂ©ponse

Complétez le code ci-dessous

###
# Mettre votre code icibksl-nlbksl-nl



Solution

###
def recherche(elt, tab):bksl-nl for i in range(len(tab)-1, -1, -1):bksl-nl if tab[i] == elt:bksl-nl return ibksl-nl return Nonebksl-nlbksl-nltry:bksl-nl assert recherche(1, [2, 3, 4]) == Nonebksl-nl assert recherche(1, [10, 12, 1, 56]) == 2bksl-nl assert recherche(1, [1, 0, 42, 7]) == 0bksl-nl assert recherche(1, [1, 50, 1]) == 2bksl-nl assert recherche(1, [8, 1, 10, 1, 7, 1, 8]) == 5bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nl



EXERCICE 2⚓

On définit une classe gérant une adresse IPv4.

On rappelle qu’une adresse IPv4 est une adresse de longueur 4 octets, notĂ©e en dĂ©cimale Ă  point, en sĂ©parant chacun des octets par un point. On considĂšre un rĂ©seau privĂ© avec une plage d’adresses IP de 192.168.0.0 Ă  192.168.0.255.

On considĂšre que les adresses IP saisies sont valides.

Les adresses IP 192.168.0.0 et 192.168.0.255 sont des adresses réservées.

Le code ci-dessous implémente la classe AdresseIP.

🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class AdresseIP:
    def __init__(self, adresse):
        self.adresse =... 

    def liste_octets(self):
        """renvoie une liste de nombres entiers,
        la liste des octets de l'adresse IP"""
        # Note : split découpe la chaine de caractÚres 
        # en fonction du séparateur
        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"""
        reservees = [ ... ] 
        return ... 

    def adresse_suivante(self):
        """renvoie un objet de AdresseIP avec l'adresse
        IP qui suit l'adresse self si elle existe et None sinon"""
        octets = ... 
        if ... == 254: 
            return None
        octet_nouveau = ... + ... 
        return AdresseIP('192.168.0.' + ...)

VĂ©rifier que :

🐍 Script Python
    >>> adresse1.est_reservee()
    False
    >>> adresse3.est_reservee()
    True
    >>> adresse2.adresse_suivante().adresse
    '192.168.0.3'

RĂ©ponse

Complétez le code ci-dessous

###
class AdresseIP:bksl-nl def py-undpy-undinitpy-undpy-und(self, adresse):bksl-nl self.adresse = ...bksl-nlbksl-nl def listepy-undoctet(self):bksl-nl """renvoie une liste de nombres entiers,bksl-nl la liste des octets de l'adresse IP"""bksl-nl return [int(i) for i in self.adresse.split(".")]bksl-nlbksl-nl def estpy-undreservee(self):bksl-nl """renvoie True si l'adresse IP est une adressebksl-nl rĂ©servĂ©e, False sinon"""bksl-nl return ... or ...bksl-nlbksl-nl def adressepy-undsuivante(self):bksl-nl """renvoie un objet de AdresseIP avec l'adressebksl-nl IP qui suit l’adresse selfbksl-nl si elle existe et False sinon"""bksl-nl if ... < 254:bksl-nl octetpy-undnouveau = ... + ...bksl-nl return AdresseIP('192.168.0.' + ...)bksl-nl else:bksl-nl return Falsebksl-nlbksl-nl



Solution

###
class AdresseIP:bksl-nl def py-undpy-undinitpy-undpy-und(self, adresse):bksl-nl self.adresse = adressebksl-nlbksl-nl def listepy-undoctets(self):bksl-nl """renvoie une liste de nombres entiers,bksl-nl la liste des octets de l'adresse IP"""bksl-nl # Note : split dĂ©coupe la chaine de caractĂšres bksl-nl # en fonction du sĂ©parateurbksl-nl return [int(i) for i in self.adresse.split(".")]bksl-nlbksl-nl def estpy-undreservee(self):bksl-nl """renvoie True si l'adresse IP est une adressebksl-nl rĂ©servĂ©e, False sinon"""bksl-nl reservees = self.listepy-undoctets()[3] bksl-nl return reservees == 0 or reservees == 255 bksl-nl bksl-nl def adressepy-undsuivante(self):bksl-nl """renvoie un objet de AdresseIP avec l'adressebksl-nl IP qui suit l'adresse self si elle existe et None sinon"""bksl-nl octets = self.listepy-undoctets()[3] bksl-nl if octets == 254: bksl-nl return Nonebksl-nl octetpy-undnouveau = self.listepy-undoctets()[3] + 1 bksl-nl return AdresseIP('192.168.0.' + str(octetpy-undnouveau))bksl-nlbksl-nltry:bksl-nl adresse1 = AdresseIP('192.168.0.1')bksl-nl adresse2 = AdresseIP('192.168.0.2')bksl-nl adresse3 = AdresseIP('192.168.0.0')bksl-nl bksl-nl assert adresse1.listepy-undoctets() == [192, 168, 0, 1]bksl-nl assert adresse1.estpy-undreservee() == Falsebksl-nl assert adresse3.estpy-undreservee() == Truebksl-nl assert adresse2.adressepy-undsuivante().adresse == '192.168.0.3'bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nl