Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Інститут комп'ютерних технологій, автоматики та метрології
/
ЗВІТ
Про виконання лабораторної роботи №2
З дисципліни «Технології програмування, частина 2»
Тема: Функції у мові Python
Мета: навчитися створювати власні функції у мові Python
Варіант 8
Розробіть функції для здійснення наступних операцій зі списками:
1. Швидке сортування;
2. Пошук індексу елемента за заданим значенням;
3. Пошук послідовності елементів;
4. Пошук перших п’яти min елементів;
5. Пошук перших п’яти max елементів;
6. Пошук середнього арифметичного;
7. Повернення списку, що сформований з початкового списку, але не містить повторів (залишається лише перший з однакових елементів).
Помістіть функції в окремий модуль. Реалізуйте програму, яка використовує всі функції зі створеного модуля. Зробити описи Doc strings для кожної реалізованої функції.
Код 1
#Виводимо список
import random
A = [random.randint(-10, 10) for i in range(7)]
print('\n Список:\n', A)
#1. Швидке сортування списку
def quicksort(A): #позначаємо функцію за допомогою інструкції def
if len(A) <=1: #умова виходу з рекурсії, якщо довжина списку <= 1, то повертаємо список A
return A #тобто, якщо список буде з одного елементу або пустий, то автоматично буде відсортований
elem = A[0] #вибираємо опорний елемент
left = list(filter(lambda x: x < elem, A)) #тут всі елементи, які менші за нульовий елемент
#функцію filter передаємо через lambda
#вона приймає один елемент нашого списку і повертаємо так, для тих елементів, котрі менші ніж змінна elem
#другий парамент функції фільтр ми передаємо значення списку A
center = [i for i in A if i == elem] #робимо через генератор списку
#проходимось по всіх елементах списку A,
#добавляємо умову якщо і рівна elem, то ми підставлятимемо і в список
right = list(filter(lambda x: x > elem, A)) #так само як і для left тільки пишемо >
return quicksort(left) + center + quicksort(right) #рекурсія (рекурсивний обхід)
print('\n Відсортований список:\n', quicksort(A))
Результат
/
Код 2
#Виводимо список
import random
A = [random.randint(-10, 10) for i in range(7)]
print('\n Список:\n', A)
#2. Пошук елемента за заданим значенням
def search(A, x):
print(A)
i = x - 1
return A[i]
print("\nПошук елементу за значенням ")
x = int(input("Виберіть індекс: "))
print("Число під цим номером: ", search(A, x))
Результат
/
Код 3
import random
A = [random.randint(-10, 10) for i in range(7)]
print('\n Список:\n', A)
#3. Пошук послідовності елементів
def poslidovnist(A): #дає змогу створити список послідовних чисел у масиві
a=[0,1,2,3,4,5,6,7,8,9,10]
b=[]
for i in A:
if i in a:
b.append(i)
print(b)
print("Пошук послідовності елементів (додатніх)")
poslidovnist(A)
Результат
/
Код 4
import random
A = [random.randint(-10, 10) for i in range(7)]
print('\n Список:\n', A)
#4. Пошук перших п’яти min елементів
def min(A):
list.sort(A)
count = 0
for i in A:
print(i)
count += 1
if count == 5:
break
print("\n Пошук перших п’яти min елементів: ")
print(min(A))
Результат
/
Код 5
import random
A = [random.randint(-10, 10) for i in range(7)]
print('\n Список:\n', A)
#5. Пошук перших п’яти max елементів
def max(A):
list.sort(A)
list.reverse(A) #сортує список у порядку зменшення
count = 0
for i in A:
print(i)
count += 1
if count == 5:
break
print("\n Пошук перших п’яти max елементів: ")
print(max(A))
Результат
/
Код 6
import random
A = [random.randint(-10, 10) for i in range(7)]
print('\nСписок:\n', A)
#6. Пошук середнього арифметичного
def ser_zn(A):
ser_zn = sum(A) / len(A)
return ser_zn
print('Cереднє арифметичне:')
print(ser_zn(A))
Результат
/
Код 7
import random
A = [random.randint(-10, 10) for i in range(7)]
print('\nСписок:\n', A)
#7. Повернення списку, що сформований без повторів
def delete(A):
for i in A:
k = A.count(i) #шукає підрядок в заданому рядку і повертає, скільки разів той присутній у ньому
if k>1:
for j in range(1, k): #генерує послідовності у заданому діапазоні
A.reverse() #переставляє елементи списку у зворотному порядку
A.remove(i) #видаляє елемент зі списку
return A
print('Видалення повторів:')
print(delete(A))
Результат
/