Sagot :
Réponse :
def test_appartenance(first_ip, second_ip, masque):
first_ip = first_ip.split('.')
second_ip = second_ip.split('.')
masque = masque.split('.')
ip_de_sous_reseau = []
plage_ip = 0
for element in masque:
if element == '0':
break
plage_ip += 1
for i in range(0, plage_ip - 1):
ip_de_sous_reseau.append(first_ip[i])
while len(ip_de_sous_reseau) < len(first_ip):
ip_de_sous_reseau.append('0')
for i in range(0, plage_ip):
if first_ip[i] == second_ip[i]:
continue
else:
return False, '.'.join(ip_de_sous_reseau)
return True, '.'.join(ip_de_sous_reseau)
print(test_appartenance('192.168.0.1', '192.168.0.2', '255.255.255.0'))
print(test_appartenance('192.168.5.1', '192.168.0.2', '255.255.255.0'))
Explications :
On déclare une fonction test_appartenance qui prend en argument une première ip, une deuxième et la masque.
On convertit ensuite first_ip, second_ip et masque en liste, pour pouvoir vérifier leurs valeurs par la suite.
La variable ip_sous_reseau servira de liste contenant, évidemment, l'ip de sous réseau, la variable plage_ip elle, contiendra l'information qui nous permet de délimiter la plage ip (ex: plage_ip = 3 = 255.255.255.0), boucle for qui suit servira donc à donner une valuer à la variable plage_ip. On ajoute ensuite les éléments pour constituant l'ip de sous réseau avec une boucle for, en utilisant plage_ip.
Enfin, nous utilisons une nouvelle fois la boucle for pour vérifier grace à plage_ip si les éléments de first_ip et second_ip sont les mêmes.
Retourne True et la plage IP si vrai, sinon Faux et la plage IP.