Завдання#
Узагальнене формулювання завдання до лабораторної роботи#
Вивчити принципи створення списків і множин у мові Python.
Розробити програми відповідно до варіанта завдання.
Вхідні дані і результат роботи супроводжувати відповідною інформацією на екрані.
Показати розроблену програму викладачеві.
Письмово відповісти на Питання для самоперевірки.
Оформити звіт відповідно до вимог.
Завдання на виконання лабораторної роботи складається з 2-х частин:
робота зі списками;
робота з множинами.
Варіанти завдань до лабораторної роботи#
Завдання на списки (Перше завдання)#
Створити змінну
seasons
, у яку занести список пір року. Необхідно:створити скрипт, який друкує номер елемента у списку і вміст елемента;
створити скрипт, який запитує номер і друкує елементи з початку і до елемента з цим номером;
передбачити перевірку відповідності номера кількості елементів — у разі, якщо номер перевищує число елементів у списку передбачити друк повідомлення про помилку і завершення скрипта.
Порада: для того, щоб скрипт друкував номер елемента і вміст елемента, необхідно скористатися вбудованою функцією
enumerate
.Створити 2 списка, елементами яких є числа. Необхідно:
створити новий список, елементами якого будуть всі можливі комбінації (попарно) чисел, що становлять ці списки (елемент зі списку 1, елемент зі списку 2 і т.д.);
вивести на екран результуючий список.
Порада: із модуля
itertools
, який представляє збірник ітераторів, використовувати функціюproduct
.Ввести список чисел одним рядком. Необхідно:
для кожного елемента цього списку вивести суму двох його сусідів. Для елементів списку, які є крайніми, одним із сусідів вважається елемент, що знаходиться на протилежному кінці цього списку.
якщо на вхід прийшло тільки одне число, треба вивести його ж.
вивід повинен містити один рядок з числами нового списку, розділеними пробілом.
Створити два списки, однакових за кількістю слів. Необхідно:
порівняти слова на однакових позиціях і видалити більше;
якщо слова однакові по довжині, видалити обидва;
вивести на екран обидва модифікованих списку.
Написати генератор списку, який генерує список від 1 до 25 і кожне непарне число підносить до квадрату. Необхідно:
вивести на екран отриманий список;
впорядкувати отриманий список, поставивши спочатку всі непарні числа;
вивести на екран.
Знайти перетин двох списків з повторюваними елементами. Необхідно:
створити два списки цілих чисел;
упорядкувати їх по зростанню;
знайти загальні елементи, включаючи повтори (оформити як функцію);
зберегти у третьому списку і вивести на екран.
Порада: не використовувати множини, тому що не будуть враховані повтори.
Перетворити однорівневий список у список із вкладеними списками, згідно з визначеними умовами. Необхідно:
створити список, у якому елементи можуть чергуватися з роздільниками. Тип роздільника вибирається самостійно. Це може бути що завгодно, навіть якесь слово;
написати функцію, яка буде формувати новий список, елементами якого будуть вкладені списки, що складаються зі значень, що знаходяться між роздільниками;
результат вивести на екран.
Перетворити список, у якому елементи представляють групи символів, у список з поодинокими символами, вибраними з цих груп. Необхідно виконати це завдання 4-ма варіантами, визначити час виконання кожним і знайти найбільш швидкодіючий:
1-ий варіант: працювати з оператором
for
(це найпростіший варіант);2-ий варіант: застосувати функціональне програмування, а саме, функції
reduce
,map
,lambda
(один рядок);3-ий варіант: застосувати функцію
sum
(один рядок);4-ий варіант: застосувати функцію
join
(один рядок).
Визначити індекси елементів списку, значення яких належать заданому діапазону (тобто не менше заданого мінімуму і не більше заданого максимуму). Необхідно:
заповнити список випадковими числами;
запросити для введення мінімум і максимум діапазону;
знайти індекси елементів, значення яких входять в діапазон. Додавати знайдені індекси до нового списку;
вивести загальне число знайдених індексів і окремо всі індекси;
елементи списку, які знаходяться за певним індексом, видалити зі списку і занести у новий список.
Створити список з не менше ніж 20 цілих чисел. Необхідно:
підсумувати елементи списку;
з отриманого числа зробити список;
продовжувати такі обчислення над отриманими списком цифр, поки не залишиться одна цифра;
всі проміжні результати демонструвати на екрані.
Створити список, елементами якого будуть слова. Необхідно:
підрахувати, скільки разів кожен символ зустрічається у списку;
створити новий список, елементами якого будуть вкладені списки, що складаються з двох елементів: символ і кількість його повторень у вихідному списку. Наприклад,
['s', 10]
;упорядкувати новий список або по символу або по числу;
типом даних
dict
у цьому завданні не користуватися.
Задати деяке число n. Створити список з цілих чисел, число елементів якого не перевищує n. Необхідно:
сформувати новий список з відсутніх чисел. Наприклад,
n = 10
, список —[1, 2, 3, 6, 7]
, тоді результат[4, 5, 8, 9]
;з’єднати два списки і впорядкувати.
Створити два списки: список ключів
['a', 'b', 'c', 'd' ...]
і список значень[4, 3, 6, 20 ...]
. Кількість елементів у обох списках однакова. Необхідно:створити новий список, елементами якого будуть вкладені списки, що складаються з двох елементів: (ключ і значення);
порахувати середнє арифметичне з усіх значень;
типом даних
dict
у цьому завданні не користуватися.
Створити 2 списка. Необхідно:
другий список скласти з тих же елементів, що і перший, але, однозначно, більше його;
елементи у першому списку не дублюються;
у другому списку можливі дублікати;
написати функцію, яка заповнить третій список позиціями символів другого списку у першому. Наприклад, перший список —
['a', 'b', 'c']
і другий —['a', 'b', 'a', 'c', 'b']
. Отриманий третій список —[0, 1, 0, 2, 1]
.
Створити три списки
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']]]]
.
Визначити індекси елементів списку, значення яких належать заданому діапазону (тобто не менше заданого мінімуму і не більше заданого максимуму). Необхідно:
заповнити список випадковими числами;
запросити для введення мінімум і максимум діапазону і число, з яким треба порівнювати числа з діапазону;
знайти індекси елементів, значення яких входять в діапазон. Додавати знайдені індекси до нового списку;
вивести загальне число знайдених індексів і окремо всі індекси;
елементи списку, які знаходяться згідно з певними індексами, порівняти з введенним числом. Ті числа, які більше введеного, організувати у список.
Створити список з символьними елементами одно-дво-і трирівневими вкладеннями. Необхідно:
перетворити у однорівневий список;
впорядкувати список за алфавітом.
Створити список із не менше 20 елементів. Визначити яку-небудь ознаку для пошуку слова. Необхідно:
замінити всі елементи спискузнайдені, згідно з ознакою, на символ
'*'
.виконати циклічний зсув списку вправо на задане число елементів (без використання методу
insert
і циклічного зсуву елементів).
Створити список з
n
слів. Необхідно:вибрати зі списку випадкове слово;
з обраного випадкового слова випадково вибрати букву;
попросити користувача її вгадати (вивести на екран слово зі знаком питання замість букви);
відновити слово.
Порада: використовувати метод
choice
модуляrandom
.Створити список дійсних чисел. Необхідно:
замінити всі парні (за номером) елементи списку, на довільну константу.
отримати суму чисел, що є сусідами з константою.
занести їх в новий список.
Створити список елементами якого є цілі числа. Обов’язково має бути кілька нулів. Необхідно:
поміняти місцями елементи в списку: перший з останнім, другий з передостаннім і т.д.
всі нулі замінити на суму сусідніх (для крайніх нулів брати значення з іншої сторони списку.
Створити 4 списка. Кожен із них складається із 3-х елементів. Перший список — це дні тижня. Другий — страви сніданку. Третій — напої. І четвертий — десерт. Необхідно:
використовуючи функцію
zip
, скласти меню сніданку на будь-який день;вивести на екран.
Злиття двох списків. Необхідно:
створити два упорядкованих списку по неспаданню;
отримати новий список, що складається з елементів двох заданих списків, таким же чином упорядкований;
сортування не використовувати.
Створити список, елементами якого є слова. Необхідно:
визначити середню «довжину» слова;
визначити кількість слів, в яких більше п’яти символів;
визначити кількість символів в найдовшому слові;
визначити номер першого найкоротшого слова.
Створити список, елементами якого є вкладені списки. Кількість елементів не менше 15. Вкладений список складається з двох елементів: країна і місто в цій країні. необхідно:
знайти міста, що знаходяться в Італії;
знайти країну, міста якої найбільше вказані в списку.
Створити список, елементами якого є двозначні цілі числа в діапазоні 00-66. Ці числа відповідають кісткам доміно. Наприклад, число 42 відповідає кістці доміно
4-2
або2-4
. Необхідно:визначити, чи відповідає послідовність чисел ряду кісток доміно, викладеному по правилам цієї гри;
розглянути можливість ситуації в грі, званою «рибою». Подібна ситуація можлива тоді, коли на стіл викладені всі шість (не рахуючи дубля) кісточок з однаковим значенням і обидва кінці ланцюга замикають кістки з цим же значенням.
Створити список з цілочисельних елементів, кількість яких не перевищує 25. Необхідно:
ввести індекси чисел \(i\) та \(j\) такі, що задовольняють умові: \(1 < i < j <25\);
числа, що знаходяться між індексами, включаючи самі індекси, замінити на символи латинського алфавіту, що знаходяться на тих же позиціях;
впорядкувати вставку за алфавітом.
Створити випадковим чином, використовуючи random, список з 15 чисел. Необхідно:
якщо перший елемент в списку непарний, то сортувати елементи на парних місцях, інакше на непарних. Сортування відбувається по неспаданню.
зробити 2 варіанти: з використанням вбудованих функцій Python і без них.
Ввести цілочисельний список розміру
n
. Серія — це група однакових елементів, що йдуть поспіль, а її довжина — кількість цих елементів. Якщо довжина серії дорівнює 1, то її не змінювати. Необхідно:перетворити список, збільшивши кожну його серію на один елемент.
створити новий список, в який записати кількість елементів кожної серії (якщо довжина серії дорівнює 1, то не записувати).
Ввести 2 рядки і сформувати з цих рядків список. Необхідно:
якщо рядки складаються тільки з чисел, то додати в середину списку суму введених чисел;
інакше додати рядок, утворений від об’єднань двох раніше введених рядків;
підсумковий рядок вивести на екран.
Завдання на множини (Друге завдання)#
Звертаємо вашу увагу на наступні моменти:
Майже всі завдання можна виконати в одному рядку.
Вся робота полягає в перекладі дій дискретної математики з множинами на Python.
У всіх наступних завданнях універсум має вигляд:
Спираючись на визначення базових операцій на множинах, у завданнях 1-25 знайти:
\(C = A \cup B\) — об’єднання двох множин;
\(C = A \cap B\) — перетин двох множин;
\(C = A / B\) — різницю першої і другої множини ;
\(C = B / A\) — різницю другої і першої множини;
\(C = A \oplus B\) — симетрична різниця двох множин;
\(C = \bar{A} \) — доповнення першої множини;
\(C = \bar{B}\) — доповнення другої множини ;
\(C = A \times B\) — декартовий добуток першої множини на другу;
\(C = A \times B\) — декартовий добуток другої множини на першу;
множину \(C\) задана зазначеною у завданні формулою \(F(A, B)\).
Варіанти завдань на тип множина (set):
\(A=\{1, a, d\}, B=\{a, ee, 4, d\}, F=((A \oplus B) \cap (A / B))\).
\(A=\{ee, a, d\}, B=\{a, ee, 4, 2\}, F=((A \cup B) \cap (A / B))\).
\(A=\{1, 2, ee, a, d\}, B=\{a, ee, 4, 2\}, F=((A \cap B) \cap (A / B))\).
\(A=\{1, 2, ee, a, d\}, B=\{d, ee, 4, 3\}, F=((A \oplus B) \cap (A \cup B))\).
\(A=\{1, 2, ee, a, d\}, B=\{1, d, ee, 4, 3\}, F=((A \oplus B) \cap (A \cap B))\).
\(A=\{1, 2, ee, a, d\}, B=\{1, d, tt, 4, 3\}, F=((A \cup B) \cap (A / B))\).
\(A=\{1, 2, ee, ww, a, d\}, B=\{1, d, tt, 4, 3\}, F=((A \cup B) / (A / B))\).
\(A=\{1, 2, ee, ww, a, d\}, B=\{1, a, c, tt, 4, 3\}, F=((A / B) \cap (A \oplus B))\).
\(A=\{1, 2, ee, ww, a, d\}, B=\{2, a, c, tt, 4, 3\}, F=((A \cap B) \cup (A / B))\).
\(A=\{1, 2, ee, ww, a, d\}, B=\{2, a, b, tt, 4, 3\}, F=((A \cup B) / (A / B))\).
\(A=\{1, 2, ee, ww, a, d\}, B=\{2, a, b, tt, 4, 3\}, F=((A \oplus B) \cup (A / B))\).
\(A=\{1, 2, ee, ww, a, d\}, B=\{2, a, b, tt, 1, 3\}, F=((A \oplus B) \cap (B / A))\).
\(A=\{1, 2, ee, ww, c, d\}, B=\{2, a, b, tt, 1, 3\}, F=((A \oplus B) \cap (A / B))\).
\(A=\{1, 2, ee, ww, c, d\}, B=\{4, a, b, tt, 1, 3\}, F=((A \oplus B) \cap (A / B))\).
\(A=\{1, a, ww, ee, c, d\}, B=\{4, a, b, tt, 1, 3\}, F=((A / B) / (A \cap B))\).
\(A=\{1, a, ww, ee, c, d\}, B=\{4, a, b, ee, 1, 3\}, F=((A \oplus B) \cup (A / B))\).
\(A=\{1, a, ww, ee, c, d\}, B=\{c, a, b, ee, 1, 3\}, F=((A \cup B) \cap (A / B))\).
\(A=\{1, a, b, ww, c, d\}, B=\{c, a, b, ee, 1, 3\}, F=((A \oplus B) \cap (\bar{B}))\).
\(A=\{1, a, b, ww, 2, d\}, B=\{tt, a, b, ee, 1, 3\}, F=((\bar{B}) \cap (A / B))\).
\(A=\{1, a, b, ww, 2, d\}, B=\{c, a, b, ee, 1, 3\}, F=((A \oplus B) \cap (\bar{B}))\).
\(A=\{1, a, b, ww, 2, d\}, B=\{2, a, b, ee, 1, 3\}, F=((A \cup B) \cap (\bar{A}))\).
\(A=\{1, a, b, ww, tt, d\}, B=\{2, a, b, ee, 1, 3\}, F=((A \oplus B) \cap (A \cup B))\).
\(A=\{1, a, b, ww, d\}, B=\{2, a, b, ee, 1, 3\}, F=((A \oplus B) \cap (A \cap B))\).
\(A=\{1, a, b, ww, d\}, B=\{2, a, c, ee, 1, 3\}, F=((A / B) \cup (A \cap B))\).
\(A=\{1, a, b, ww, d\}, B=\{1, a, c, ee, 4, 3\}, F=((A \oplus B) \cap (A / B))\).
Ввести два списки цілих чисел. Всі числа кожного списку знаходяться на окремому рядку. Необхідно:
вивести всі числа, які входять як в перший, так і в другій список;
вивести числа в порядку зростання;
завдання вирішити в один рядок.
Ввести два списки цілих чисел. Всі числа кожного списку знаходяться на окремому рядку. Необхідно:
порахувати, скільки чисел міститься одночасно як в першому списку, так і в другому;
результат вивести на екран;
завдання вирішити в один рядок.
Згенерувати 2 випадкові рядки з будь-яких ASCII символів. Необхідно:
створити 2 множини
А
іM
з цих рядків;порахувати кількість елементів у множині
А
типуМ
;вивести на екран елементи і їх кількість.
Згенерувати рядок, що містить символи, цифри, роздільники. Необхідно:
створити з рядка 3 множини: з символів, цифр і роздільників;
вивести на екран і підрахувати потужність кожного.
Виконати операцію \(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
.