Programme principal:
Ecrire ici le programme programme principal qui demande les IPv4 de deux machines ainsi que le masque de réseau et qui affiche l'appartenance
ou la non appartenance de ces deux machines à un même réseau LAN Dans le cas où les deux machines font partie d'un même sous réseau,
affiche également l'IPv4 du sous réseau"
C’est du python merci en avance


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.