{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "6c9fdc9d",
   "metadata": {},
   "source": [
    "# 22-09 · Коды состояния HTTP\n",
    "\n",
    "Практика к разделу [«HTTP: запросы, ответы, методы и коды состояния»](../../site/chapters/glava-22/22-09-http.html)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "360570ed",
   "metadata": {},
   "source": [
    "## Цель\n",
    "\n",
    "Написать функцию, которая классифицирует код состояния HTTP по диапазону — 2xx, 3xx, 4xx, 5xx."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3d6e7342",
   "metadata": {},
   "source": [
    "## Рабочий пример"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "160b0b06",
   "metadata": {},
   "outputs": [],
   "source": [
    "def gruppa_koda(kod):\n",
    "    if 200 <= kod < 300:\n",
    "        return \"успех\"\n",
    "    if 300 <= kod < 400:\n",
    "        return \"перенаправление\"\n",
    "    if 400 <= kod < 500:\n",
    "        return \"ошибка клиента\"\n",
    "    if 500 <= kod < 600:\n",
    "        return \"ошибка сервера\"\n",
    "    return \"неизвестный диапазон\"\n",
    "\n",
    "\n",
    "for kod in (200, 201, 302, 400, 404, 500):\n",
    "    print(kod, \"->\", gruppa_koda(kod))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c21c2b8a",
   "metadata": {},
   "source": [
    "## Проверка результата"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "79e43708",
   "metadata": {},
   "outputs": [],
   "source": [
    "assert gruppa_koda(200) == \"успех\"\n",
    "assert gruppa_koda(201) == \"успех\"\n",
    "assert gruppa_koda(303) == \"перенаправление\"\n",
    "assert gruppa_koda(404) == \"ошибка клиента\"\n",
    "assert gruppa_koda(500) == \"ошибка сервера\"\n",
    "print(\"Верно: код состояния классифицируется по диапазону.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3c24e929",
   "metadata": {},
   "source": [
    "## Задание ★★ Самостоятельная задача\n",
    "\n",
    "Напишите функцию `eto_uspeh(kod)`, которая возвращает True только для кодов 2xx."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3841f669",
   "metadata": {},
   "outputs": [],
   "source": [
    "def eto_uspeh(kod):\n",
    "    return 200 <= kod < 300\n",
    "\n",
    "\n",
    "assert eto_uspeh(200) is True\n",
    "assert eto_uspeh(201) is True\n",
    "assert eto_uspeh(404) is False\n",
    "assert eto_uspeh(302) is False\n",
    "print(\"Верно: eto_uspeh() отличает 2xx от остальных диапазонов.\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Cartesian Python 3.14",
   "language": "python",
   "name": "cartesian-python314"
  },
  "language_info": {
   "name": "python",
   "version": "3.14.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
