{
  "format": "rubrick-lesson",
  "formatVersion": 1,
  "exportedAt": "2026-11-06T20:21:10.563Z",
  "source": {
    "lessonId": "00000000-0000-4000-8001-df6ebd9eb58a",
    "courseId": "00000000-0000-4000-8000-23eeeb4347bd",
    "courseTitle": "От блоков к Python",
    "ordering": 4,
    "updatedAt": "2026-09-27T10:47:13.291568+00:00"
  },
  "lessonTask": null,
  "lessonTaskSchemaVersion": null,
  "lesson": {
    "schemaVersion": 3,
    "id": "python-04-functions",
    "courseId": "python",
    "order": 4,
    "title": "Своя команда",
    "summary": "Собственная команда, которую можно звать сколько угодно раз",
    "duration": 35,
    "mode": "python",
    "attachments": [],
    "sections": [
      {
        "kind": "intro",
        "body": "Собственная команда, которую можно звать сколько угодно раз\n\n### Чему научишься\n- Объявить функцию\n- Передать в неё аргумент\n- Вызвать несколько раз\n\n### Новое\n- Функция — это своя команда с именем\n- Аргумент делает одну команду пригодной для разных случаев\n- Программа читается лучше, когда куски названы",
        "attachments": [],
        "steps": []
      },
      {
        "kind": "task",
        "body": "Заведи собственную команду «нарисовать квадрат» и вызови её три раза с разной длиной стороны.\n\n### Результат\n- В программе есть своя команда с аргументом\n- Она вызвана несколько раз с разными значениями",
        "attachments": [],
        "steps": [
          {
            "id": "s1",
            "title": "Заверни в функцию",
            "body": "Возьми код квадрата и дай ему имя.",
            "attachments": []
          },
          {
            "id": "s2",
            "title": "Добавь аргумент",
            "body": "Пусть сторона передаётся снаружи.",
            "attachments": []
          },
          {
            "id": "s3",
            "title": "Позови",
            "body": "Три вызова с разной стороной.",
            "attachments": []
          },
          {
            "id": "s4",
            "title": "Сравни",
            "body": "Посмотри на карте, получились ли три разных квадрата.",
            "attachments": []
          }
        ],
        "hints": [
          "Функция объявлена, а ничего не происходит? Объявить — не значит вызвать: её нужно позвать по имени ниже."
        ]
      },
      {
        "kind": "assembly",
        "body": "### Понадобится\n- Ноутбук\n- Виртуальный робот\n\nВиртуальный робот.",
        "attachments": [],
        "steps": []
      },
      {
        "kind": "connection",
        "body": "",
        "attachments": [],
        "steps": []
      },
      {
        "kind": "example",
        "body": "### Что должно получиться\n- Три вложенных квадрата видно на карте движения",
        "attachments": [],
        "steps": [],
        "program": {
          "mode": "python",
          "python": "robot.configure_drive(wheel_diameter_mm=43.2, track_width_mm=120, left_motor=1, right_motor=2)\n\ndef квадрат(сторона):\n    for _ in range(4):\n        robot.forward_cm(сторона)\n        robot.turn_left(90)\n\nквадрат(20)\nквадрат(30)\nквадрат(40)\n\nrobot.stop()\n"
        }
      },
      {
        "kind": "next",
        "body": "",
        "attachments": [],
        "steps": []
      }
    ],
    "category": "Python",
    "colour": "#FFF200"
  }
}