Aller au contenu

Ep 37

▶ TĂ©lĂ©charger le sujet en pdf.

EXERCICE 1⚓

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

Exemples :

🐍 Script Python
    >>> recherche(1, [2, 3, 4])
    -1
    >>> 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 -1bksl-nlbksl-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.

Compléter le code ci-dessus et instancier trois objets : adresse1, adresse2, adresse3 avec respectivement les arguments suivants :

  • '192.168.0.1', '192.168.0.2', '192.168.0.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-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 self.listepy-undoctet()[3] == 0 or self.listepy-undoctet()[3] == 255bksl-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 self.listepy-undoctet()[3] < 254:bksl-nl octetpy-undnouveau = self.listepy-undoctet()[3] + 1bksl-nl return AdresseIP('192.168.0.' + str(octetpy-undnouveau))bksl-nl else:bksl-nl return Falsebksl-nlbksl-nladresse1 = AdresseIP('192.168.0.1')bksl-nladresse2 = AdresseIP('192.168.0.2')bksl-nladresse3 = AdresseIP('192.168.0.0')bksl-nlbksl-nl