# -*- coding: utf-8 -*-
"""
Задание 5.2a

Всё, как в задании 5.2, но, если пользователь ввел адрес хоста, а не адрес сети,
надо преобразовать адрес хоста в адрес сети и вывести адрес сети и маску, как в задании 5.2.

Пример адреса сети (все биты хостовой части равны нулю):
* 10.0.1.0/24
* 190.1.0.0/16

Пример адреса хоста:
* 10.0.1.1/24 - хост из сети 10.0.1.0/24
* 10.0.5.195/28 - хост из сети 10.0.5.192/28

Если пользователь ввел адрес 10.0.1.1/24,
вывод должен быть таким:

Network:
10        0         1         0
00001010  00000000  00000001  00000000

Mask:
/24
255       255       255       0
11111111  11111111  11111111  00000000

Проверить работу скрипта на разных комбинациях хост/маска, например:
    10.0.5.195/28, 10.0.1.1/24

Подсказка:
Есть адрес хоста в двоичном формате и маска сети 28. Адрес сети это первые 28 бит адреса хоста + 4 ноля.
То есть, например, адрес хоста 10.1.1.195/28  в двоичном формате будет
bin_ip = "00001010000000010000000111000011"

А адрес сети будет первых 28 символов из bin_ip + 0000 (4 потому что всего в адресе может быть 32 бита, а 32 - 28 = 4)
00001010000000010000000111000000

Ограничение: Все задания надо выполнять используя только пройденные темы.

"""
ip = input("Введите ip устройства (10.1.1.0/24) ")

ip=ip.split('.')
mask= ip[3].split('/')
ip[3]=0
mask = mask[1]
ip2=ip
print("Network:")
print('{:d}\t\t{:d}\t\t{:d}\t\t{:d} '.format(int(ip[0]),int(ip[1]),int(ip[2]),int(ip[3])))
print('{:08b}\t{:08b}\t{:08b}\t{:08b}'.format(int(ip2[0]),int(ip2[1]),int(ip2[2]),int(ip2[3])))

print("\nMask:")
print('/'+mask)
mask="1"*int(mask)+"0"*(32-int(mask))
mask2=ip
mask2[0]=mask[:8]
mask2[1]=mask[8:16]
mask2[2]=mask[16:24]
mask2[3]=mask[24:]

print('{:d}\t\t{:d}\t\t{:d}\t\t{:d} '.format(int(mask2[0],2),int(mask2[1],2),int(mask2[2],2),int(mask2[3],2)))
print('{:08b}\t{:08b}\t{:08b}\t{:08b}'.format(int(mask2[0],2),int(mask2[1],2),int(mask2[2],2),int(mask2[3],2)))
