Печать: Ctrl+P → ориентация альбомная, масштаб 100 % (не «вписать в лист»), поля нет, «печать фона» включить — иначе пропадут рамки таблиц. На листе две одинаковые карточки: разрезать по пунктиру посередине, получится две штуки формата A5. Эта серая рамка на бумагу не печатается.
11 класс

IP-адрес и маска сети

Задание 10 ЕГЭ: адрес сети, широковещательный адрес, сколько в сети адресов с нужным числом единиц и какой может быть маска

Сеть одной строкой

from ipaddress import *
net = ip_network('192.168.159.86/255.255.252.0', 0)
print(net[0])    # адрес сети:          192.168.156.0
print(net[-1])   # широковещательный:   192.168.159.255
print(net[-2])   # наибольший для ПК:   192.168.159.254
print(net[1])    # наименьший для ПК:   192.168.156.1

Второй аргумент 0 разрешает писать адрес любого узла сети, а не только адрес самой сети. Маску можно писать четырьмя числами (/255.255.252.0) или числом единиц (/22).

Сумма октетов и запись без точек

a = net[0]
s = 0
for x in str(a).split('.'):    # четыре числа адреса
    s += int(x)
print(s)                       # 192 + 168 + 156 + 0 = 516
print(str(a).replace('.', '')) # 1921681560

Сколько адресов с условием на единицы

c = 0
for ip in net:                       # все адреса сети по очереди
    if f'{ip:b}'.count('1') % 5 != 0:  # f'{ip:b}' — 32 двоичные цифры
        c += 1
print(c)

Левые два байта — f'{ip:b}'[:16], правые — f'{ip:b}'[16:].

Неизвестна маска — перебор

x = ip_address('192.75.64.98')
for m in range(33):                       # m — единиц в маске
    net = ip_network(f'{x}/{m}', 0)
    if net[0] == ip_address('192.75.64.0'):
        print(m)                          # первое подходящее — наименьшее
        break
В условииВ программе
адрес сети · широковещательныйnet[0] · net[-1]
наибольший адрес, который можно назначить компьютеруnet[-2]
сумма числовых значений октетовцикл по str(a).split('.')
без разделителейstr(a).replace('.', '')
количество единиц кратно 5 · не кратно 5% 5 == 0 · % 5 != 0
узлы в разных сетях · в одной сетиa != b · y in net
наименьшее m · наибольшее mprint(m) и break · last = m, после цикла print(last)
служебные адреса узлам не назначаютx not in (a[0], a[-1])

Пять ловушек

  • Маску применить. Сумма октетов самого узла — не ответ: нужен net[0];
  • Последний и предпоследний. net[-1] — широковещательный, компьютеру его не дают; наибольший для компьютера — net[-2];
  • Кратно или не кратно. Читай вопрос до конца: ответы в сумме дают все адреса сети;
  • Все адреса — значит все. В задачах на счёт адрес сети и широковещательный тоже считаются, если их не исключили словами;
  • Единицы, а не нули. Количество единиц маски — это m; нулей в ней 32 − m.
Тренажёр и разбор темы: https://kibersvet.ru/11/maska-seti/
Материалы подготовлены с использованием технологий искусственного интеллекта.
11 класс

IP-адрес и маска сети

Задание 10 ЕГЭ: адрес сети, широковещательный адрес, сколько в сети адресов с нужным числом единиц и какой может быть маска

Сеть одной строкой

from ipaddress import *
net = ip_network('192.168.159.86/255.255.252.0', 0)
print(net[0])    # адрес сети:          192.168.156.0
print(net[-1])   # широковещательный:   192.168.159.255
print(net[-2])   # наибольший для ПК:   192.168.159.254
print(net[1])    # наименьший для ПК:   192.168.156.1

Второй аргумент 0 разрешает писать адрес любого узла сети, а не только адрес самой сети. Маску можно писать четырьмя числами (/255.255.252.0) или числом единиц (/22).

Сумма октетов и запись без точек

a = net[0]
s = 0
for x in str(a).split('.'):    # четыре числа адреса
    s += int(x)
print(s)                       # 192 + 168 + 156 + 0 = 516
print(str(a).replace('.', '')) # 1921681560

Сколько адресов с условием на единицы

c = 0
for ip in net:                       # все адреса сети по очереди
    if f'{ip:b}'.count('1') % 5 != 0:  # f'{ip:b}' — 32 двоичные цифры
        c += 1
print(c)

Левые два байта — f'{ip:b}'[:16], правые — f'{ip:b}'[16:].

Неизвестна маска — перебор

x = ip_address('192.75.64.98')
for m in range(33):                       # m — единиц в маске
    net = ip_network(f'{x}/{m}', 0)
    if net[0] == ip_address('192.75.64.0'):
        print(m)                          # первое подходящее — наименьшее
        break
В условииВ программе
адрес сети · широковещательныйnet[0] · net[-1]
наибольший адрес, который можно назначить компьютеруnet[-2]
сумма числовых значений октетовцикл по str(a).split('.')
без разделителейstr(a).replace('.', '')
количество единиц кратно 5 · не кратно 5% 5 == 0 · % 5 != 0
узлы в разных сетях · в одной сетиa != b · y in net
наименьшее m · наибольшее mprint(m) и break · last = m, после цикла print(last)
служебные адреса узлам не назначаютx not in (a[0], a[-1])

Пять ловушек

  • Маску применить. Сумма октетов самого узла — не ответ: нужен net[0];
  • Последний и предпоследний. net[-1] — широковещательный, компьютеру его не дают; наибольший для компьютера — net[-2];
  • Кратно или не кратно. Читай вопрос до конца: ответы в сумме дают все адреса сети;
  • Все адреса — значит все. В задачах на счёт адрес сети и широковещательный тоже считаются, если их не исключили словами;
  • Единицы, а не нули. Количество единиц маски — это m; нулей в ней 32 − m.