# -*- coding: utf-8 -*-
'''
Задание 4.1a

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

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

Пример адреса хоста:
* 10.0.1.1/24 - хост из сети 10.0.1.0/24
* 10.0.5.1/30 - хост из сети 10.0.5.0/30

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

Network:
10        0         1         0
00001010  00000000  00000001  00000000

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

Проверить работу скрипта на разных комбинациях сеть/маска.

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

'''

ip_mask = input('Введите IP-сети в формате 10.1.1.0/24: ')

ip_mask = ip_mask.split('/')
ip = ip_mask[0]
mask = ip_mask[1]

ip_bit = ''.join('{:>08b}'.format(int(x)) for x in ip.split('.'))
ip_bit = ip_bit[0:int(mask)]+'0'*(32-int(mask))

print('Network:')
print('{:<10}{:<10}{:<10}{:<10}'.format(int(ip_bit[0:8],2),int(ip_bit[8:16],2),int(ip_bit[16:24],2),int(ip_bit[24:32],2)))
print('{:<10}{:<10}{:<10}{:<10}'.format(ip_bit[0:8],ip_bit[8:16],ip_bit[16:24],ip_bit[24:32]))

print('\nMask:')
print('/{}'.format(mask))
mask = '{:<b}{}'.format(2**int(mask)-1,'0'*(32-int(mask)))
print('{:<10}{:<10}{:<10}{:<10}'.format(int(mask[0:8],2),int(mask[8:16],2),int(mask[16:24],2),int(mask[24:32],2)))
print('{:<10}{:<10}{:<10}{:<10}'.format(mask[0:8],mask[8:16],mask[16:24],mask[24:32]))
02bf62f0e8532c6313827550451481a97c3604f3
<mask token>

<mask token>
print('Network:')
print('{:<10}{:<10}{:<10}{:<10}'.format(int(ip_bit[0:8], 2), int(ip_bit[8:
    16], 2), int(ip_bit[16:24], 2), int(ip_bit[24:32], 2)))
print('{:<10}{:<10}{:<10}{:<10}'.format(ip_bit[0:8], ip_bit[8:16], ip_bit[
    16:24], ip_bit[24:32]))
print('\nMask:')
print('/{}'.format(mask))
<mask token>
print('{:<10}{:<10}{:<10}{:<10}'.format(int(mask[0:8], 2), int(mask[8:16], 
    2), int(mask[16:24], 2), int(mask[24:32], 2)))
print('{:<10}{:<10}{:<10}{:<10}'.format(mask[0:8], mask[8:16], mask[16:24],
    mask[24:32]))

<mask token>
ip_mask = input('Введите IP-сети в формате 10.1.1.0/24: ')
ip_mask = ip_mask.split('/')
ip = ip_mask[0]
mask = ip_mask[1]
ip_bit = ''.join('{:>08b}'.format(int(x)) for x in ip.split('.'))
ip_bit = ip_bit[0:int(mask)] + '0' * (32 - int(mask))
print('Network:')
print('{:<10}{:<10}{:<10}{:<10}'.format(int(ip_bit[0:8], 2), int(ip_bit[8:
    16], 2), int(ip_bit[16:24], 2), int(ip_bit[24:32], 2)))
print('{:<10}{:<10}{:<10}{:<10}'.format(ip_bit[0:8], ip_bit[8:16], ip_bit[
    16:24], ip_bit[24:32]))
print('\nMask:')
print('/{}'.format(mask))
mask = '{:<b}{}'.format(2 ** int(mask) - 1, '0' * (32 - int(mask)))
print('{:<10}{:<10}{:<10}{:<10}'.format(int(mask[0:8], 2), int(mask[8:16], 
    2), int(mask[16:24], 2), int(mask[24:32], 2)))
print('{:<10}{:<10}{:<10}{:<10}'.format(mask[0:8], mask[8:16], mask[16:24],
    mask[24:32]))

# -*- coding: utf-8 -*-
'''
Задание 4.1a

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

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

Пример адреса хоста:
* 10.0.1.1/24 - хост из сети 10.0.1.0/24
* 10.0.5.1/30 - хост из сети 10.0.5.0/30

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

Network:
10        0         1         0
00001010  00000000  00000001  00000000

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

Проверить работу скрипта на разных комбинациях сеть/маска.

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

'''

ip_mask = input('Введите IP-сети в формате 10.1.1.0/24: ')

ip_mask = ip_mask.split('/')
ip = ip_mask[0]
mask = ip_mask[1]

ip_bit = ''.join('{:>08b}'.format(int(x)) for x in ip.split('.'))
ip_bit = ip_bit[0:int(mask)]+'0'*(32-int(mask))

print('Network:')
print('{:<10}{:<10}{:<10}{:<10}'.format(int(ip_bit[0:8],2),int(ip_bit[8:16],2),int(ip_bit[16:24],2),int(ip_bit[24:32],2)))
print('{:<10}{:<10}{:<10}{:<10}'.format(ip_bit[0:8],ip_bit[8:16],ip_bit[16:24],ip_bit[24:32]))

print('\nMask:')
print('/{}'.format(mask))
mask = '{:<b}{}'.format(2**int(mask)-1,'0'*(32-int(mask)))
print('{:<10}{:<10}{:<10}{:<10}'.format(int(mask[0:8],2),int(mask[8:16],2),int(mask[16:24],2),int(mask[24:32],2)))
print('{:<10}{:<10}{:<10}{:<10}'.format(mask[0:8],mask[8:16],mask[16:24],mask[24:32]))