Listes Min max Moy Rch
Listes opérations
Poo
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