Skip to content

Instantly share code, notes, and snippets.

@emilgaripov
Created May 5, 2020 12:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save emilgaripov/3961f4cd0481a15d42946b7708ac43ea to your computer and use it in GitHub Desktop.
Save emilgaripov/3961f4cd0481a15d42946b7708ac43ea to your computer and use it in GitHub Desktop.
ValueError Comments
'''
Задание 5.2
Запросить у пользователя ввод IP-сети в формате: 10.1.1.0/24
Затем вывести информацию о сети и маске в таком формате:
Network:
10 1 1 0
00001010 00000001 00000001 00000000
Mask:
/24
255 255 255 0
11111111 11111111 11111111 00000000
Проверить работу скрипта на разных комбинациях сеть/маска.
Ограничение: Все задания надо выполнять используя только пройденные темы.
'''
ip_in_str = input('Введите ip адрес в формате a.a.a.a/b: ') # Образуется тип данных "строка"
ip_in_list = ip_in_str.strip().split('.') # разделяем строку по символу точки ".", образуется тип данных "список(list)"
oct_1, oct_2, oct_3 = int(ip_in_list[0]), int(ip_in_list[1]), int(ip_in_list[2])
oct_4 = int(ip_in_list[-1].strip().split('/')[0])
mask = int(ip_in_list[-1].strip().split('/')[1])
template_ip = '{:<10}{:<10}{:<10}{:<10}'
template_oct = '{:08b} {:08b} {:08b} {:08b}'
mask_out = mask*'1' + (32-mask)*'0'
mask1, mask2, mask3, mask4 = [mask_out[0:8], mask_out[8:16],
mask_out[16:24], mask_out[24:32]]
mask1_10, mask2_10, mask3_10, mask4_10 = [int(mask_out[0:8], 2), int(mask_out[8:16], 2),
int(mask_out[16:24], 2), int(mask_out[24:32], 2)]
out_mask_10 = '{:<10}{:<10}{:<10}{:<10}'
out_mask_2 = '{:10}{:10}{:10}{:10}'
print('Network :' + '\n')
print(template_ip.format(oct_1, oct_2, oct_3, oct_4))
print(template_oct.format(oct_1, oct_2, oct_3, oct_4))
print('Mask: ')
print('/', mask, sep=" ")
print(out_mask_10.format(mask1_10, mask2_10, mask3_10, mask4_10))
print(out_mask_2.format(mask1, mask2, mask3, mask4))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment