Exercice 1 (50% des points)
Écrire une fonction recherche
qui prend en paramètres elt
un nombre et tab
un tableau de nombres, et qui renvoie l’indice de la dernière occurrence de elt
dans tab
si elt
est dans tab
et le -1 sinon.
Jeu de tests possible
1
2
3
4
5
|
if __name__ == "__main__":
assert recherche(1, [2, 3, 4]) == -1
assert recherche(1, [10, 12, 1, 56]) == 2
assert recherche(1, [1, 50, 1]) == 2
assert recherche(1, [8, 1, 10, 1, 7, 1, 8]) == 5
|
Exercice 2 (50% des points)
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
:
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
26
27
28
29
30
|
from __future__ import annotations
from typing import List
class AdresseIP:
def __init__(self: AdresseIP, adresse: str) -> None:
self.adresse = ....
def liste_octet(self: AdresseIP) -> List[int]:
"""
Retourne 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: AdresseIP) -> bool:
"""
Retourne True si l'adresse IP est une adresse réservée, False sinon
"""
return .... or ....
def adresse_suivante(self: AdresseIP) -> AdresseIP:
"""
Retourne un objet de AdresseIP avec l'adresse IP qui suit l’adresse self si elle existe et False sinon
"""
octet = ....
if .... < 254:
octet_nouveau = .... + ....
return AdresseIP('192.168.0.' + ....)
else:
return False
|
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'
.
Jeu de tests possible
1
2
3
4
|
if __name__ == "__main__":
assert adresse1.est_reservee() == False
assert adresse3.est_reservee() == True
assert adresse2.adresse_suivante().adresse == '192.168.0.3'
|