Semaine 11

This commit is contained in:
gauvainboiche
2026-07-11 21:38:00 +02:00
parent d3d2416dea
commit 0d071d2843
281 changed files with 54412 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
"""
**Consignes :**
1. Écrivez une classe `Equipement` avec :
- un constructeur `__init__(self, hostname, ip, latence_ms, actif=True)` ;
- une méthode `__str__` renvoyant une description lisible ;
- une méthode `est_operationnel(self, seuil_ms=100)` qui renvoie `True` si l'équipement est **actif ET** que sa latence est **sous le seuil**.
2. Écrivez une fonction `hotes_disponibles(bits_hote)` qui renvoie le nombre d'adresses **hôtes utilisables** d'un sous-réseau (indice : `2 ** bits - 2`).
3. Écrivez une fonction `trier_par_latence(equipements)` qui renvoie la liste triée par latence croissante (utilisez `sorted` + `lambda`).
4. Créez 3 équipements, affichez-les **triés par latence** avec leur état opérationnel, puis affichez le nombre d'hôtes d'un `/24` (soit 8 bits d'hôte).
"""
class Equipment():
def __init__(self, hostname:str, up:str, latency:float, active:bool=True):
self.hostname = hostname
self.up = up
self.latency = latency
self.active = active
def __str__(self) -> str:
if self.active:
return f"=====\n \
HOST : {self.hostname}\n \
IS_UP : {self.up}\n \
LATENCY : {self.latency}"
else:
return f"=====\n \
Host is currently inactive."
__repr__ = __str__
def is_operational(self, max_latency=100) -> bool:
return self.active and self.latency < max_latency
def available_host(host_bits):
return f"{2 ** (32 - host_bits) - 2} hôtes sont disponibles sur {host_bits} bits."
def sort_by_latency(equipments):
return sorted(equipments, key=lambda e: e.latency)
# Equipements
e1 = Equipment("Berillium", "Yes", 15, True)
e2 = Equipment("Thorium", "No", 7, False)
e3 = Equipment("Cadmium", "Yes", 12.4, True)
e4 = Equipment("Polonium", "Yes", 145, True)
e5 = Equipment("Actinium", "Yes", 2.7, True)
eX = [e1, e2, e3, e4, e5]
for e in sort_by_latency(eX):
if e.up == "Yes":
print(e)
print(available_host(24))