You are on page 1of 8

Міністерство освіти і науки України

Державний університет «Житомирська політехніка»

Кафедра Комп’ютерних наук


Група: КН-20-1

Програмування мовою Python


Лабораторна робота №5
«Функції»

Виконала: Ковальчук О.П.


Прийняв: Пулеко І.В.

ДУ «Житомирська політехніка».21.122.11.000 – Лр5


Змн. Арк. № докум. Підпис Дата
Розроб. Ковальчук О.П. Літ. Арк. Аркушів
Перевір. Пулеко І.В. 1 8
Керівник
Звіт з
Н. контр. лабораторної роботи ФІКТ Гр. КН-20-1[2]
Зав. каф.
Мета роботи: ознайомитися основами функціонального програмування і
використання користувацьких функцій в мові Python.

Хід роботи:

Завдання 1: Користувач вводить дві сторони трьох прямокутників. Вивести


їх площі.
Лістинг програми:

s1 = [float(i) for i in input("Введіть дві сторони для 1-го прямокутника:


").split()]

s2 = [float(i) for i in input("Введіть дві сторони для 2-го прямокутника:


").split()]

s3 = [float(i) for i in input("Введіть дві сторони для 3-го прямокутника:


").split()]

print(s1[0]*s1[1], s2[0]*s2[1], s3[0]*s3[1])

Рис. 1.1 Результат виконання програми.

Завдання 2: Дано катети двох прямокутних трикутників. Написати


функцію обчислення довжини гіпотенузи цих трикутників. Порівняти і вивести
яка з гіпотенуз більше, а яка менше.
Лістинг програми:
import math

kat1 = int(input('Введіть перший катет 1-го трикутника: '))


kat2 = int(input('Введіть перший катет 2-го трикутника: '))
kat3 = int(input('Введіть перший катет 3-го трикутника: '))
kat4 = int(input('Введіть перший катет 4-го трикутника: '))

gipot1 = float(math.sqrt(kat1*kat1 + kat2*kat2))


gipot2 = float(math.sqrt(kat3*kat3 + kat4*kat4))

gipot1 = float()
gipot2 = float()

Ковальчук О.П Арк.


Пулеко І.В. ДУ «Житомирська політехніка».20.122.10.000 – Лр5
2
Змн. Арк. № докум. Підпис Дата
print (gipot1)

if gipot1 > gipot2:


d1 = gipot1 - gipot2
print('Гіпотенуза 1-го трикутника більше ')

else:
d2 = gipot2 - gipot1
print('Гіпотенуза 2-го трикутника більше ')

Рис. 2.1 Результат виконання програми.

Завдання 3: Задано коло (x-a)2 + (y-b)2 = R2 і точки Р (р1, р2), F (f1, f1), L
(l1, l2). З'ясувати і вивести на екран, скільки точок лежить всередині кола.
Перевірку, чи лежить точка всередині кола, оформити у вигляді функції.

Лістинг програми:
def task(a, b, r, c):
return len(list(filter(lambda x: (x[0] - a) ** 2 + (x[1] - b) ** 2 < r ** 2,
c)))

print(task(int(input('Введіть точку a: ')),


int(input('Введіть точку b: ')),
int(input('Введіть радіус: ')),
[[int(i) for i in input('Введіть точки р1, р2: ').split()],
[int(i) for i in input('Введіть точки f1, f2: ').split()],
[int(i) for i in input('Введіть точки l1,l2: ').split()]]))

Рис. 3.1 Результат виконання програми.

Ковальчук О.П Арк.


Пулеко І.В. ДУ «Житомирська політехніка».20.122.10.000 – Лр5
2
Змн. Арк. № докум. Підпис Дата
Завдання 4: Дано числа X, Y, Z, Т - довжини сторін чотирикутника.
Обчислити його площу, якщо кут між сторонами довжиною X і Y - прямий.

Лістинг програми:
import math

x = float(input('Введіть число x = '))


y = float(input('Введіть число y = '))
z = float(input('Введіть число z = '))
t = float(input('Введіть число t = '))
d = math.sqrt(x * x + y * y)

def Square1(x, y):


return x * y * 0.5

def Square2(d, z, t):


p = (z + t + d) / 2
return math.sqrt(p * (p - z) * (p - t) * (p - d))

print(Square1(x, y) + Square2(d, z, t))

Рис. 4.1 Результат виконання програми.

Завдання 5: Знайти всі натуральні числа, що не перевищують заданого n,


які діляться на кожне із заданих користувачем чисел.
Лістинг програми:
def test(number: int, dividers: list) -> bool:
for i in dividers:
if number / i != number // i:
return False
return True

n = int(input('Введіть n: '))
numbers = [2, 3, 7]

result = [i for i in range(1, n) if test(i, numbers)]


print(*result)

Ковальчук О.П Арк.


Пулеко І.В. ДУ «Житомирська політехніка».20.122.10.000 – Лр5
2
Змн. Арк. № докум. Підпис Дата
Рис. 5.1 Результат виконання програми

Завдання 6: Скласти програму для знаходження чисел з інтервалу [М, N],


що мають найбільшу кількість дільників.
Лістинг програми:
import math
import random
import time

def get_time6(func):
def function(m,n):
start = time.perf_counter()
value = func(m, n)
end = time.perf_counter()
print("Пройшло часу:", end - start)
return value
return function

@get_time6
def chysla(m, n):
maxx = []
dict = {}
for i in range(m, n + 1):
count = 0
for j in range(1, i // 2 + 1):
if i % j ==0:
count += 1
dict[i] = count
maximum = max(dict.values())
for key, value in dict.items():
maxx.append(key)
return maxx

m = int(input("Введіть число M інтервалу: "))


n = int(input("Введіть число N інтервалу: "))
print('Числа, які належать інтервалу, що мають найбільшу кількість дільників:',
chysla(m, n))

Ковальчук О.П Арк.


Пулеко І.В. ДУ «Житомирська політехніка».20.122.10.000 – Лр5
2
Змн. Арк. № докум. Підпис Дата
Рис. 6.1 Результат виконання програми.

Завдання 7: Написати функцію для пошуку всіх простих чисел від 0 до N з


можливістю вибору формату представлення результату (списком; рядками в
стовпчик; просто вивести кількість простих чисел.
Лістинг програми:
import math
import random
import time

def get_time7(func):
def function(m,type="1"):
start = time.perf_counter()
value = func(m, type)
end = time.perf_counter()
print("Пройшло часу:", end - start)
return value

return function

@get_time7
def prosti(n, type='lst'):
count = 0
list = [2]
for i in range(3, n + 1, 2):
if (i > 10) and (i % 10 == 5):
continue
for j in list:
if j * j - 1 > i:
list.append(i)
count += 1
break
if i % j == 0:
break
else:
list.append(i)
count +=1
if type == 'lst':
return list
elif type == 'spisok':
return '\n'.join(map(str, list))
elif type == 'count':
return count + 1
while True:
try:
ch = int(input('Введіть тип виводу: \n 1-Список \n 2-Рядки \n
3-Кількість \n'))
if not 0 < ch < 4:
raise ValueError
except ValueError:

Ковальчук О.П Арк.


Пулеко І.В. ДУ «Житомирська політехніка».20.122.10.000 – Лр5
2
Змн. Арк. № докум. Підпис Дата
print('Помилка!')
else:
break
n = int(input('Введіть крайнє число діапазону: '))
if ch == 1:
print('Прості числа в даному діапазоні значення: ', prosti(n,
type='lst'))
if ch == 2:
print(prosti(n, type='spisok'))
if ch == 3:
print('Кількість простих чисел в даному діапазоні значення: ',
prosti(n, type='count'))

Завдання 8: Дано список з 30 випадкових цілих і дробових чисел від -100


до + 100. Сформувати зі списку 10 списків по 3 елементи. Вивести отримані
списки в порядку зростання за сумою абсолютних значень окремих елементів.

Лістинг програми:
import math
import random
import time

def get_time8(func):
def function(list, m, n):
start = time.perf_counter()
value = func(list, m, n)
end = time.perf_counter()
print("Пройшло часу: ",end - start)
return value

return function

@get_time8
def list(mylist, bottom, upper):
list = []
minimum = min(mylist)
maximum = max(mylist)
if type(bottom) is not int or type(upper) is not int:
raise Exception('Введіть число типу int: ')
if minimum + bottom >= maximum - upper or bottom >= upper:
raise Exception('Неправильно вказаний інтервал!' )

for i in range(len(mylist)):
if minimum + bottom <= mylist[i] <= maximum - upper and bottom <=
mylist[i] <= upper:
list.append(mylist[i])
if not list:
return 'Такі числа відсутні'
return list

n = int(input('Введіть кількість елементів списку: '))


a = int(input('Введіть нижній діапазон значень: '))
b = int(input('Введіть верхній діапазон значень: '))
bottom = int(input('Введіть нижній діапазон значень для нового списку: '))

Ковальчук О.П Арк.


Пулеко І.В. ДУ «Житомирська політехніка».20.122.10.000 – Лр5
2
Змн. Арк. № докум. Підпис Дата
upper = int(input('Введіть верхній діапазон значень для нового списку: '))
list1 = [random.randint(a, b) for i in range(n)]
print(list1)
print(list(list1, bottom, upper))

Висновок: В ході виконання лабораторної роботи ми ознайомились з


основами функціонального програмування і використання користувацьких
функцій в мові Python.

Ковальчук О.П Арк.


Пулеко І.В. ДУ «Житомирська політехніка».20.122.10.000 – Лр5
2
Змн. Арк. № докум. Підпис Дата

You might also like