{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "fb13aaef",
   "metadata": {},
   "source": [
    "# <span style=\"color: #0077FF\">Задания для практического занятия по теме «Одномерные списки»</span>   "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5af7e9e3",
   "metadata": {},
   "source": [
    "### Перед началом работы переименуйте файл! \n",
    "### Замените __NameStud__ на свои ФамилияИмя латиницей, __gr0__ на gr + номер Вашей группы."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d0727b3d",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-warning\"> 📌 При решении задач используйте нижеописанные функции ввода с клавиатуры и печати элементов списка.📌\n",
    "    </div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "f4d13380",
   "metadata": {},
   "outputs": [],
   "source": [
    "def print_list(X): # параметр функции - список\n",
    "    for element in X: \n",
    "        print(element, end=' ')\n",
    "    print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "9a7625f7",
   "metadata": {},
   "outputs": [],
   "source": [
    "def input_list(count):\n",
    "    X = []\n",
    "    for i in range(count):\n",
    "        x = int(input(f'a[{i:^3d}] = '))\n",
    "        X.append(x)\n",
    "    return X"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "75b16137",
   "metadata": {},
   "source": [
    "### <b><span style=\"color: #0077FF\"> 💫 Задание 1. 💫 </span></b>   \n",
    "Опишите функцию random_list() для заполнения списка чисел случайным образом. Входной параметр функции: число элементов $count$,  минимальное значение элемента списка $nmin$ и максимальное значение элемента списка $nmax$. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "a0de49cc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[8, 7, 5, 3, 9, 1]\n"
     ]
    }
   ],
   "source": [
    "from random import randint\n",
    "\n",
    "def random_list(count, nmin, nmax):\n",
    "    lst = []\n",
    "    for i in range(count):\n",
    "        x = randint(nmin, nmax)\n",
    "        lst += [x] \n",
    "    return lst\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f5dfbab7",
   "metadata": {},
   "source": [
    "### <b><span style=\"color: #0077FF\"> 💫 Задание 2. 💫 </span></b>   \n",
    "Дано натуральное число $N$, минимальное значение элемента списка $nmin$ и максимальное значение элемента списка $nmax$. Используя функцию ввод элементов с клавиатуры или случайной генерации элементов списка, получить список из $N$-элементов. Описать функцию определения количества вхождения четных чисел в список. Продемонстрировать работу функции."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "92d0fc98",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[6, 6, 6, 10, 9, 9]\n",
      "4\n"
     ]
    }
   ],
   "source": [
    "def cntEven(lst):\n",
    "    cnt = 0\n",
    "    for x in lst:\n",
    "        if x % 2 == 0:\n",
    "            cnt += 1\n",
    "    return cnt\n",
    "\n",
    "a = random_list(6, 1, 10)\n",
    "print(a)\n",
    "\n",
    "k = cntEven(a)\n",
    "print(k)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b198c34c",
   "metadata": {},
   "source": [
    "### <b><span style=\"color: #0077FF\"> 💫 Задание 3. 💫 </span></b>   \n",
    "Дано натуральное число $N$, минимальное значение элемента списка $nmin$ и максимальное значение элемента списка $nmax$. Используя функцию ввод элементов с клавиатуры или случайной генерации элементов списка, получить список из $N$-элементов. Определить, что больше: количество положительных элементов или количество отрицательных. Для решения задачи описать функцию, которая принимает список и возвращает логическую переменную."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "2eb97f2e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[4, 4, 0, 5, -2, 4, -3]\n",
      "Положительных больше\n"
     ]
    }
   ],
   "source": [
    "# ev: ЧТО ДЕЛАТЬ С НУЛЯМИ?\n",
    "\n",
    "def ok(lst):\n",
    "    cntP = cntO = 0\n",
    "    for x in lst:\n",
    "        if x > 0:\n",
    "            cntP += 1\n",
    "        elif x < 0:\n",
    "            cntO += 1\n",
    "    return cntP > cntO\n",
    "\n",
    "a = random_list(7, -5, 5)\n",
    "print(a)\n",
    "\n",
    "if ok(a):\n",
    "    print('Положительных больше')\n",
    "else:\n",
    "    print('Отрицательных больше')\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6b085118",
   "metadata": {},
   "source": [
    "### <b><span style=\"color: #0077FF\"> 💫 Задание 4. 💫 </span></b>   \n",
    "Дано натуральное число $N$, минимальное значение элемента списка $nmin$ и максимальное значение элемента списка $nmax$. Используя функцию ввод элементов с клавиатуры или случайной генерации элементов списка, получить список из $N$-элементов. Найти и вывести на экран все пары элементов последовательности, один из которых — квадрат другого."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "8998a9ed",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2, 4, 16, 8, 64, 5, 10, 25, 5]\n",
      "2 4\n",
      "4 16\n",
      "8 64\n",
      "25 5\n"
     ]
    }
   ],
   "source": [
    "#a = random_list(10, 1, 20)\n",
    "a = [2, 4, 16, 8, 64, 5, 10, 25, 5]\n",
    "print(a)\n",
    "\n",
    "for i in range(0, len(a)-1):\n",
    "    if a[i] > a[i+1]:\n",
    "        if a[i] == a[i+1]**2:\n",
    "            print(a[i], a[i+1])\n",
    "    else:\n",
    "        if a[i+1] == a[i]**2:\n",
    "            print(a[i], a[i+1])\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "34113da1",
   "metadata": {},
   "source": [
    "### <b><span style=\"color: #0077FF\"> 💫 Задание 5. 💫 </span></b>   \n",
    "Дано натуральное число $N$, минимальное значение элемента списка $nmin$, максимальное значение элемента списка $nmax$ и целое число $k$. Используя функцию ввод элементов с клавиатуры или случайной генерации элементов списка, получить список из $N$-элементов целого типа. Опишите функцию для решения задачи: посчитать, сколько элементов списка по модулю равны $k$. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "74546f84",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2, 4, 16, 3, 3, -2, 10, -3, 5, -4]\n",
      "2\n"
     ]
    }
   ],
   "source": [
    "def cntK(t, k):\n",
    "    cnt = 0\n",
    "    for x in t:\n",
    "        if abs(x) == k:\n",
    "            cnt += 1\n",
    "    return cnt        \n",
    "\n",
    "#a = random_list(10, -10, 10)\n",
    "a = [2, 4, 16, 3, 3, -2, 10, -3, 5, -4]\n",
    "print(a)\n",
    "\n",
    "cntk_ = cntK(a, 4)\n",
    "print(cntk_)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f82f6072",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3358f2ab",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
