You are on page 1of 10

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

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

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

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


Лабораторна робота № 5
«Основи мови Python»

Виконав: Іващенко О. Г.
Прийняв: Окунькова О. О.

Змн. Арк. № докум. Підпис Дата


Розроб. Іващенко О.Г. Літ. Арк. Аркушів
Перевір. .Окунькова О.О
Звіт з 1 10
Керівник
лабораторної роботи №5
Н. контр. ФІКТ, гр. КН-22-1
Затверд.
Мета роботи: ознайомитися основами функціонального програмування і
використання користувацьких функцій в мові Python.

Виконання роботи:

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


їх площі.
def square(a,b):
return a*b
squares=[]
for i in range(3):
a=int(input("Введіть першу сторону - "))
b=int(input("Введіть другу сторону - "))
sq=square(a,b)
squares.append(sq)
print(squares)

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

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


обчислення довжини гіпотенузи цих трикутників. Порівняти і вивести яка з
гіпотенуз більше, а яка менше.
import math
def gi(a,b):
return math.sqrt(a**2+b**2)
gis=[]
for i in range(2):
a=int(input("Введіть перший катет - "))
b=int(input("Введіть другий катет - "))
g=gi(a,b)
gis.append(g)
max=max(gis)
print(gis)
print(max)

Арк.

2
Змн. Арк. № докум. Підпис Дата
Результат виконання програми:

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

def is_inside_circle(center_x,center_y,point_x,point_y,radius):
c = ((point_x - center_x) **2+ (point_y - center_y) **2)
r2 = radius**2
if c <= r2: return 1
else: return 0
a_point =float(input("Введіть точку a: "))
b_point =float(input("Введіть точку b: "))
r_circle =float(input("Введіть радіус r: "))
dots = []
P,F,L = ["P"],["F"],["L"]
dots.append(P)
dots.append(F)
dots.append(L)
dotsInCircle =0
for dot in dots:
print(f"\nТочка{dot[0]}")
dot.clear()
dot.append(float(input("X = ")))
dot.append(float(input("Y = ")))
result = is_inside_circle(a_point,b_point,dot[0],dot[1],r_circle)
print(bool(result))
dotsInCircle += result
print(f"\nК-сть точок, що знаходяться всередині кола:{dotsInCircle}")

Арк.

3
Змн. Арк. № докум. Підпис Дата
Результат виконання програми:

Завдання 4. Дано числа X, Y, Z, Т - довжини сторін чотирикутника.


Обчислити його площу, якщо кут між сторонами довжиною X і Y - прямий.

import math
def triangle_area(a,b,c):
p = (a + b + c)/2
s = math.sqrt(p*(p-a)*(p-b)*(p-c))
return s
def p_area(x,y,z,t):
h = math.sqrt(x * x + y * y)
s1 = x * y /2
s2 = triangle_area(z,t,h)
return round(s1 + s2,5)
x =float(input("Введіть сторону X: "))
y =float(input("Введіть сторону Y: "))
z =float(input("Введіть сторону Z: "))
t =float(input("Введіть сторону T: "))
print("\nПлоща чотирикутника: ",p_area(x,y,z,t))

Арк.

4
Змн. Арк. № докум. Підпис Дата
Результат виконання програми:

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


діляться на кожне із заданих користувачем чисел.

def find_numbers(user_numbers,n):
result=[]
p=0
for i in range(1,n+1):
for num in user_numbers:
if(num%i==0):
p+=1

if(p== len(user_numbers)):
result.append(i)
p=0
return result

user_numbers = input("Введіть числа, розділені пробілами: ").split()


user_numbers = [int(num) for num in user_numbers]
n = int(input("Введіть максимальне значення n: "))
result=find_numbers(user_numbers,n)
print(result)

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

Арк.

5
Змн. Арк. № докум. Підпис Дата
Завдання 6. Скласти програму для знаходження чисел з інтервалу [М, N],
що мають найбільшу кількість дільників.

import time
def timeit(func):
def wrapper(*args, **kwargs):
start_time = time.perf_counter()
result = func(*args, **kwargs)
end_time = time.perf_counter()
execution_time = end_time - start_time
print(f'Час виконання: {execution_time:.6f} секунд')
return result
return wrapper
def count_divisors(num):
count = 0
for i in range(1, num + 1):
if num % i == 0:
count += 1
return count
@timeit
def find_number_with_most_divisors(start, end):
max_divisors = 0
number_with_max_divisors = None
for num in range(start, end + 1):
divisors_count = count_divisors(num)
if divisors_count > max_divisors:
max_divisors = divisors_count
number_with_max_divisors = num

return number_with_max_divisors, max_divisors

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


N = int(input("Введіть кінець інтервалу (N): "))
result_number, max_divisors_count = find_number_with_most_divisors(M, N)
print(f"Число з найбільшою кількістю дільників у інтервалі [{M}, {N}]:")
print(f"Число: {result_number}")
print(f"Кількість дільників: {max_divisors_count}")

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

Арк.

6
Змн. Арк. № докум. Підпис Дата
Завдання 7. Написати функцію для пошуку всіх простих чисел від 0 до N з
можливістю вибору формату представлення результату (списком; рядками в
стовпчик; просто вивести кількість простих чисел.

import time
def timeit(func):
def wrapper(*args, **kwargs):
start_time = time.perf_counter()
result = func(*args, **kwargs)
end_time = time.perf_counter()
execution_time = end_time - start_time
print(f'Час виконання: {execution_time:.6f} секунд')
return result
return wrapper
@timeit
def search(n):
p=0
result=[]
for i in range(1,n+1):
for j in range(1,n+1):
if(i%j==0):
p+=1
if(p==2):
result.append(i)
p=0
return result
n = int(input("Введіть максимальне значення n: "))
result=search(n)
p=int(input("1 - вивести список\n2 - вивести список в стовпчик\n3 - вивести
кількість елементів списку\n"))
if(p==1):
print(result)
elif(p==2):
for res in result:
print(res)
elif(p==3):
print(len(result))

Арк.

7
Змн. Арк. № докум. Підпис Дата
Результат виконання програми:

Арк.

8
Змн. Арк. № докум. Підпис Дата
Завдання 8. Дано список з випадкових натуральних чисел довільної
довжини. Написати програму, що формуватиме з заданого другий список, що
міститиме тільки значення від MIN+bottom до MAX-upper. Де MIN і MAX –
відповідно найменше і найбільше число в списку, а botton і upper – нижня і верхня
межа значень вибірки нового списку. Програма має містити обробку винятків на
випадок введення символів невірного типу, дробових чисел, вихід за межі
мінімального і максимального значення.

import random
import time

def timeit(func):
def wrapper(*args, **kwargs):
start_time = time.perf_counter()
result = func(*args, **kwargs)
end_time = time.perf_counter()
execution_time = end_time - start_time
print(f'Час виконання: {execution_time:.6f} секунд')
return result
return wrapper
@timeit
def function(upper,bottom,random_numbers):
result=[]
Min = min(random_numbers)
Max = max(random_numbers)
if(Min+bottom>=Max-upper):
print("Не правильні межі, помилка")
return 0
else:
for num in random_numbers:
if(Min+bottom<=num<=Max-upper):
result.append(num)
return result

length_of_list = 10
random_numbers = [random.randint(1, 100) for _ in range(length_of_list)]
print("Випадковий список - ", random_numbers)

try:
bottom = int(input("Введіть нижню межу - "))
upper = int(input("Введіть верхню межу - "))
while(bottom>upper):
print("Межі введені не вірно, bottom>upper, введіть ще раз")
bottom=int(input("Введіть нижню межу - "))
upper=int(input("Введіть верхню межу - "))
except ValueError:
print("Помилка: Введено невірний тип даних. Введіть числа.")
result=function(upper,bottom,random_numbers)
print("Результат відсортованого списку - ",result)

Арк.

9
Змн. Арк. № докум. Підпис Дата
Результат виконання програми:

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


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

Арк.

10
Змн. Арк. № докум. Підпис Дата

You might also like