Pro Python
1.29K subscribers
85 photos
20 files
102 links
Канал создан, чтобы заинтересовать вас языками программирования.

@ - связь, реклама
Download Telegram
ip = "218.159.208.24"
address = "218.159.192.0"
for mask in range(33):
network = ip_network(f"{ip}/{mask}", False)
if address in str(network):
print(network.netmask)


Перебираем все возможные варианты масок, то есть 0 от 32 (потому что максимум 32 единицы, а минимум ни одной в двоичном представлении)
При помощи функции ip_network() находим адрес сети, выводим в консоль подходящие маски для этого адреса.

Получаем

255.255.192.0
255.255.224.0


Каждое число представляет отдельный байт, видим что самый наибольший третий байт равен 224
👍2
from ipaddress import *

mask = "255.255.255.192"

net = ip_network(f"0.0.0.0/{mask}")
print(net.num_addresses - 2)


Для получения сети мы используем фиктивный IP-адрес, который используется для определения сети, так как адрес сети будет выведен правильно с учетом маски.

Обращаемся к свойству num_addresses, получим количество возможных iP-адресов в данной сети и отнимем 2 (по условию задачи) и получим 62
2
from ipaddress import *

mask = "255.255.240.0"
ip = "232.126.150.18"
net = ip_network(f"{ip}/{mask}", False)

ip = ip_address(ip)
net_ip = ip_address(str(net).split("/")[0])

print(int(ip)-int(net_ip))


Номер компьютера сети равен разнице IP-адреса компьютера и адреса сети. Находим адрес сети по маске и IP. Дальше при помощи функции ip_address получаем объекты IP-адресов в правильном виде. В адресе сети избавляемся от маски. Далее отнимаем от IP-адреса компьютера адрес сети, предварительно конвертировав оба значения в десятичное целочисленное число (int) для удобства и получаем ответ: 1554
🔥51😎1
Python и веб-разработка: Быстрый старт с FastAPI

FastAPI — современный веб-фреймворк для создания API на Python с поддержкой асинхронного программирования. Он позволяет быстро и легко разрабатывать высокопроизводительные RESTful API, используя аннотации типов для валидации данных.

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
return {"message": "Hello, World!"}

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "query": q}


Запуск
uvicorn main:app --reload
👍7