Завдання#

Узагальнене формулювання завдання до лабораторної роботи#

  1. Вивчити принципи створення списків і множин у мові Python.

  2. Розробити програми відповідно до варіанта завдання.

  3. Вхідні дані і результат роботи супроводжувати відповідною інформацією на екрані.

  4. Показати розроблену програму викладачеві.

  5. Письмово відповісти на Питання для самоперевірки.

  6. Оформити звіт відповідно до вимог.

Завдання на виконання лабораторної роботи складається з 2-х частин:

  • робота зі списками;

  • робота з множинами.

Варіанти завдань до лабораторної роботи#

Завдання на списки (Перше завдання)#

  1. Створити змінну seasons, у яку занести список пір року. Необхідно:

    • створити скрипт, який друкує номер елемента у списку і вміст елемента;

    • створити скрипт, який запитує номер і друкує елементи з початку і до елемента з цим номером;

    • передбачити перевірку відповідності номера кількості елементів — у разі, якщо номер перевищує число елементів у списку передбачити друк повідомлення про помилку і завершення скрипта.

    Порада: для того, щоб скрипт друкував номер елемента і вміст елемента, необхідно скористатися вбудованою функцією enumerate.

  2. Створити 2 списка, елементами яких є числа. Необхідно:

    • створити новий список, елементами якого будуть всі можливі комбінації (попарно) чисел, що становлять ці списки (елемент зі списку 1, елемент зі списку 2 і т.д.);

    • вивести на екран результуючий список.

    Порада: із модуля itertools, який представляє збірник ітераторів, використовувати функцію product.

  3. Ввести список чисел одним рядком. Необхідно:

    • для кожного елемента цього списку вивести суму двох його сусідів. Для елементів списку, які є крайніми, одним із сусідів вважається елемент, що знаходиться на протилежному кінці цього списку.

    • якщо на вхід прийшло тільки одне число, треба вивести його ж.

    • вивід повинен містити один рядок з числами нового списку, розділеними пробілом.

  4. Створити два списки, однакових за кількістю слів. Необхідно:

    • порівняти слова на однакових позиціях і видалити більше;

    • якщо слова однакові по довжині, видалити обидва;

    • вивести на екран обидва модифікованих списку.

  5. Написати генератор списку, який генерує список від 1 до 25 і кожне непарне число підносить до квадрату. Необхідно:

    • вивести на екран отриманий список;

    • впорядкувати отриманий список, поставивши спочатку всі непарні числа;

    • вивести на екран.

  6. Знайти перетин двох списків з повторюваними елементами. Необхідно:

    • створити два списки цілих чисел;

    • упорядкувати їх по зростанню;

    • знайти загальні елементи, включаючи повтори (оформити як функцію);

    • зберегти у третьому списку і вивести на екран.

    Порада: не використовувати множини, тому що не будуть враховані повтори.

  7. Перетворити однорівневий список у список із вкладеними списками, згідно з визначеними умовами. Необхідно:

    • створити список, у якому елементи можуть чергуватися з роздільниками. Тип роздільника вибирається самостійно. Це може бути що завгодно, навіть якесь слово;

    • написати функцію, яка буде формувати новий список, елементами якого будуть вкладені списки, що складаються зі значень, що знаходяться між роздільниками;

    • результат вивести на екран.

  8. Перетворити список, у якому елементи представляють групи символів, у список з поодинокими символами, вибраними з цих груп. Необхідно виконати це завдання 4-ма варіантами, визначити час виконання кожним і знайти найбільш швидкодіючий:

    • 1-ий варіант: працювати з оператором for (це найпростіший варіант);

    • 2-ий варіант: застосувати функціональне програмування, а саме, функції reduce, map, lambda (один рядок);

    • 3-ий варіант: застосувати функцію sum (один рядок);

    • 4-ий варіант: застосувати функцію join (один рядок).

  9. Визначити індекси елементів списку, значення яких належать заданому діапазону (тобто не менше заданого мінімуму і не більше заданого максимуму). Необхідно:

    • заповнити список випадковими числами;

    • запросити для введення мінімум і максимум діапазону;

    • знайти індекси елементів, значення яких входять в діапазон. Додавати знайдені індекси до нового списку;

    • вивести загальне число знайдених індексів і окремо всі індекси;

    • елементи списку, які знаходяться за певним індексом, видалити зі списку і занести у новий список.

  10. Створити список з не менше ніж 20 цілих чисел. Необхідно:

    • підсумувати елементи списку;

    • з отриманого числа зробити список;

    • продовжувати такі обчислення над отриманими списком цифр, поки не залишиться одна цифра;

    • всі проміжні результати демонструвати на екрані.

  11. Створити список, елементами якого будуть слова. Необхідно:

    • підрахувати, скільки разів кожен символ зустрічається у списку;

    • створити новий список, елементами якого будуть вкладені списки, що складаються з двох елементів: символ і кількість його повторень у вихідному списку. Наприклад, ['s', 10];

    • упорядкувати новий список або по символу або по числу;

    • типом даних dict у цьому завданні не користуватися.

  12. Задати деяке число n. Створити список з цілих чисел, число елементів якого не перевищує n. Необхідно:

    • сформувати новий список з відсутніх чисел. Наприклад, n = 10, список — [1, 2, 3, 6, 7], тоді результат [4, 5, 8, 9];

    • з’єднати два списки і впорядкувати.

  13. Створити два списки: список ключів ['a', 'b', 'c', 'd' ...] і список значень [4, 3, 6, 20 ...]. Кількість елементів у обох списках однакова. Необхідно:

    • створити новий список, елементами якого будуть вкладені списки, що складаються з двох елементів: (ключ і значення);

    • порахувати середнє арифметичне з усіх значень;

    • типом даних dict у цьому завданні не користуватися.

  14. Створити 2 списка. Необхідно:

    • другий список скласти з тих же елементів, що і перший, але, однозначно, більше його;

    • елементи у першому списку не дублюються;

    • у другому списку можливі дублікати;

    • написати функцію, яка заповнить третій список позиціями символів другого списку у першому. Наприклад, перший список — ['a', 'b', 'c'] і другий — ['a', 'b', 'a', 'c', 'b']. Отриманий третій список — [0, 1, 0, 2, 1].

  15. Створити три списки W, X, Y. Необхідно:

    • Знайти у списку W елементи, наявні у списку X і замінити їх відповідними елементами списку Y, інші елементи залишити без зміни. Наприклад, вихідні спискі: список X: ['a', 'b'], список Y: [1, 2], список W: [['a', 'b'], 'a', ['c '[' a ', [' a ',' d ']]]]. Після перетворення список W повинен прийняти такий вигляд: [[1, 2], 1, ['c' [1, [1, 'd']]]].

  16. Визначити індекси елементів списку, значення яких належать заданому діапазону (тобто не менше заданого мінімуму і не більше заданого максимуму). Необхідно:

    • заповнити список випадковими числами;

    • запросити для введення мінімум і максимум діапазону і число, з яким треба порівнювати числа з діапазону;

    • знайти індекси елементів, значення яких входять в діапазон. Додавати знайдені індекси до нового списку;

    • вивести загальне число знайдених індексів і окремо всі індекси;

    • елементи списку, які знаходяться згідно з певними індексами, порівняти з введенним числом. Ті числа, які більше введеного, організувати у список.

  17. Створити список з символьними елементами одно-дво-і трирівневими вкладеннями. Необхідно:

    • перетворити у однорівневий список;

    • впорядкувати список за алфавітом.

  18. Створити список із не менше 20 елементів. Визначити яку-небудь ознаку для пошуку слова. Необхідно:

    • замінити всі елементи спискузнайдені, згідно з ознакою, на символ '*'.

    • виконати циклічний зсув списку вправо на задане число елементів (без використання методу insert і циклічного зсуву елементів).

  19. Створити список з n слів. Необхідно:

    • вибрати зі списку випадкове слово;

    • з обраного випадкового слова випадково вибрати букву;

    • попросити користувача її вгадати (вивести на екран слово зі знаком питання замість букви);

    • відновити слово.

    Порада: використовувати метод choice модуля random.

  20. Створити список дійсних чисел. Необхідно:

    • замінити всі парні (за номером) елементи списку, на довільну константу.

    • отримати суму чисел, що є сусідами з константою.

    • занести їх в новий список.

  21. Створити список елементами якого є цілі числа. Обов’язково має бути кілька нулів. Необхідно:

    • поміняти місцями елементи в списку: перший з останнім, другий з передостаннім і т.д.

    • всі нулі замінити на суму сусідніх (для крайніх нулів брати значення з іншої сторони списку.

  22. Створити 4 списка. Кожен із них складається із 3-х елементів. Перший список — це дні тижня. Другий — страви сніданку. Третій — напої. І четвертий — десерт. Необхідно:

    • використовуючи функцію zip, скласти меню сніданку на будь-який день;

    • вивести на екран.

  23. Злиття двох списків. Необхідно:

    • створити два упорядкованих списку по неспаданню;

    • отримати новий список, що складається з елементів двох заданих списків, таким же чином упорядкований;

    • сортування не використовувати.

  24. Створити список, елементами якого є слова. Необхідно:

    • визначити середню «довжину» слова;

    • визначити кількість слів, в яких більше п’яти символів;

    • визначити кількість символів в найдовшому слові;

    • визначити номер першого найкоротшого слова.

  25. Створити список, елементами якого є вкладені списки. Кількість елементів не менше 15. Вкладений список складається з двох елементів: країна і місто в цій країні. необхідно:

    • знайти міста, що знаходяться в Італії;

    • знайти країну, міста якої найбільше вказані в списку.

  26. Створити список, елементами якого є двозначні цілі числа в діапазоні 00-66. Ці числа відповідають кісткам доміно. Наприклад, число 42 відповідає кістці доміно 4-2 або 2-4. Необхідно:

    • визначити, чи відповідає послідовність чисел ряду кісток доміно, викладеному по правилам цієї гри;

    • розглянути можливість ситуації в грі, званою «рибою». Подібна ситуація можлива тоді, коли на стіл викладені всі шість (не рахуючи дубля) кісточок з однаковим значенням і обидва кінці ланцюга замикають кістки з цим же значенням.

  27. Створити список з цілочисельних елементів, кількість яких не перевищує 25. Необхідно:

    • ввести індекси чисел \(i\) та \(j\) такі, що задовольняють умові: \(1 < i < j <25\);

    • числа, що знаходяться між індексами, включаючи самі індекси, замінити на символи латинського алфавіту, що знаходяться на тих же позиціях;

    • впорядкувати вставку за алфавітом.

  28. Створити випадковим чином, використовуючи random, список з 15 чисел. Необхідно:

    • якщо перший елемент в списку непарний, то сортувати елементи на парних місцях, інакше на непарних. Сортування відбувається по неспаданню.

    • зробити 2 варіанти: з використанням вбудованих функцій Python і без них.

  29. Ввести цілочисельний список розміру n. Серія — це група однакових елементів, що йдуть поспіль, а її довжина — кількість цих елементів. Якщо довжина серії дорівнює 1, то її не змінювати. Необхідно:

    • перетворити список, збільшивши кожну його серію на один елемент.

    • створити новий список, в який записати кількість елементів кожної серії (якщо довжина серії дорівнює 1, то не записувати).

  30. Ввести 2 рядки і сформувати з цих рядків список. Необхідно:

    • якщо рядки складаються тільки з чисел, то додати в середину списку суму введених чисел;

    • інакше додати рядок, утворений від об’єднань двох раніше введених рядків;

    • підсумковий рядок вивести на екран.

Завдання на множини (Друге завдання)#

Звертаємо вашу увагу на наступні моменти:

  1. Майже всі завдання можна виконати в одному рядку.

  2. Вся робота полягає в перекладі дій дискретної математики з множинами на Python.

У всіх наступних завданнях універсум має вигляд:

\[U = \{1,2,3,4,a,b,c,d,ee,tt,ww\}\]

Спираючись на визначення базових операцій на множинах, у завданнях 1-25 знайти:

  1. \(C = A \cup B\) — об’єднання двох множин;

  2. \(C = A \cap B\) — перетин двох множин;

  3. \(C = A / B\) — різницю першої і другої множини ;

  4. \(C = B / A\) — різницю другої і першої множини;

  5. \(C = A \oplus B\) — симетрична різниця двох множин;

  6. \(C = \bar{A} \) — доповнення першої множини;

  7. \(C = \bar{B}\) — доповнення другої множини ;

  8. \(C = A \times B\) — декартовий добуток першої множини на другу;

  9. \(C = A \times B\) — декартовий добуток другої множини на першу;

  10. множину \(C\) задана зазначеною у завданні формулою \(F(A, B)\).

Варіанти завдань на тип множина (set):

  1. \(A=\{1, a, d\}, B=\{a, ee, 4, d\}, F=((A \oplus B) \cap (A / B))\).

  2. \(A=\{ee, a, d\}, B=\{a, ee, 4, 2\}, F=((A \cup B) \cap (A / B))\).

  3. \(A=\{1, 2, ee, a, d\}, B=\{a, ee, 4, 2\}, F=((A \cap B) \cap (A / B))\).

  4. \(A=\{1, 2, ee, a, d\}, B=\{d, ee, 4, 3\}, F=((A \oplus B) \cap (A \cup B))\).

  5. \(A=\{1, 2, ee, a, d\}, B=\{1, d, ee, 4, 3\}, F=((A \oplus B) \cap (A \cap B))\).

  6. \(A=\{1, 2, ee, a, d\}, B=\{1, d, tt, 4, 3\}, F=((A \cup B) \cap (A / B))\).

  7. \(A=\{1, 2, ee, ww, a, d\}, B=\{1, d, tt, 4, 3\}, F=((A \cup B) / (A / B))\).

  8. \(A=\{1, 2, ee, ww, a, d\}, B=\{1, a, c, tt, 4, 3\}, F=((A / B) \cap (A \oplus B))\).

  9. \(A=\{1, 2, ee, ww, a, d\}, B=\{2, a, c, tt, 4, 3\}, F=((A \cap B) \cup (A / B))\).

  10. \(A=\{1, 2, ee, ww, a, d\}, B=\{2, a, b, tt, 4, 3\}, F=((A \cup B) / (A / B))\).

  11. \(A=\{1, 2, ee, ww, a, d\}, B=\{2, a, b, tt, 4, 3\}, F=((A \oplus B) \cup (A / B))\).

  12. \(A=\{1, 2, ee, ww, a, d\}, B=\{2, a, b, tt, 1, 3\}, F=((A \oplus B) \cap (B / A))\).

  13. \(A=\{1, 2, ee, ww, c, d\}, B=\{2, a, b, tt, 1, 3\}, F=((A \oplus B) \cap (A / B))\).

  14. \(A=\{1, 2, ee, ww, c, d\}, B=\{4, a, b, tt, 1, 3\}, F=((A \oplus B) \cap (A / B))\).

  15. \(A=\{1, a, ww, ee, c, d\}, B=\{4, a, b, tt, 1, 3\}, F=((A / B) / (A \cap B))\).

  16. \(A=\{1, a, ww, ee, c, d\}, B=\{4, a, b, ee, 1, 3\}, F=((A \oplus B) \cup (A / B))\).

  17. \(A=\{1, a, ww, ee, c, d\}, B=\{c, a, b, ee, 1, 3\}, F=((A \cup B) \cap (A / B))\).

  18. \(A=\{1, a, b, ww, c, d\}, B=\{c, a, b, ee, 1, 3\}, F=((A \oplus B) \cap (\bar{B}))\).

  19. \(A=\{1, a, b, ww, 2, d\}, B=\{tt, a, b, ee, 1, 3\}, F=((\bar{B}) \cap (A / B))\).

  20. \(A=\{1, a, b, ww, 2, d\}, B=\{c, a, b, ee, 1, 3\}, F=((A \oplus B) \cap (\bar{B}))\).

  21. \(A=\{1, a, b, ww, 2, d\}, B=\{2, a, b, ee, 1, 3\}, F=((A \cup B) \cap (\bar{A}))\).

  22. \(A=\{1, a, b, ww, tt, d\}, B=\{2, a, b, ee, 1, 3\}, F=((A \oplus B) \cap (A \cup B))\).

  23. \(A=\{1, a, b, ww, d\}, B=\{2, a, b, ee, 1, 3\}, F=((A \oplus B) \cap (A \cap B))\).

  24. \(A=\{1, a, b, ww, d\}, B=\{2, a, c, ee, 1, 3\}, F=((A / B) \cup (A \cap B))\).

  25. \(A=\{1, a, b, ww, d\}, B=\{1, a, c, ee, 4, 3\}, F=((A \oplus B) \cap (A / B))\).

  26. Ввести два списки цілих чисел. Всі числа кожного списку знаходяться на окремому рядку. Необхідно:

    • вивести всі числа, які входять як в перший, так і в другій список;

    • вивести числа в порядку зростання;

    • завдання вирішити в один рядок.

  27. Ввести два списки цілих чисел. Всі числа кожного списку знаходяться на окремому рядку. Необхідно:

    • порахувати, скільки чисел міститься одночасно як в першому списку, так і в другому;

    • результат вивести на екран;

    • завдання вирішити в один рядок.

  28. Згенерувати 2 випадкові рядки з будь-яких ASCII символів. Необхідно:

    • створити 2 множини А і M з цих рядків;

    • порахувати кількість елементів у множині А типу М;

    • вивести на екран елементи і їх кількість.

  29. Згенерувати рядок, що містить символи, цифри, роздільники. Необхідно:

    • створити з рядка 3 множини: з символів, цифр і роздільників;

    • вивести на екран і підрахувати потужність кожного.

  30. Виконати операцію \(A \times B\) декартового добутки (всілякі комбінації значень) двох множин. Цікавий приклад декартового добутку двох множин виникає, якщо взяти A = {a,b,c,d,e,f,g,h}, а B = {1,2,3,4,5,6,7,8}. У цьому випадку множина \(A \times B\) означає набір полів шахової дошки. Необхідно:

    • створити 2 множини А і В;

    • виконати операцію декартового добутки в одному рядку;

    • результат вивести на екран.

    Порада: використовувати метод itertools.product з модуля itertools.