13.12.2021-19.12.2021
Тема: Нелінійні алгоритми для списків із числовими типами даних мовою Python3
Практична частина
Завдання 1. Створити, реалізувати, протестувати
алгоритм мовою програмування Python3 в середовищі
програмування Thonny для пошуку найбільшого спільного дільника масиву натуральних чисел.
Реалізація
print('Алгоритм 1 знаходження НСД для багатьох чисел')
import random
a1=[72+1152*n*random.randint(22,
222) for n in range(40, -38,-1) if
n%10==2]
a=[144,1152,864,2016,66912,4704]; nsd=0; nsk=0; k=0; m=0;
def nsd(k,m):
if k==0:
nsd=m
return nsd
while m!=0:
if k>m:
k=k-m
else:
m=m-k
nsd=k
return nsd
x=nsd(a[0],a[1])
print(1,'-ий krok nsd=',x)
for n in range(2,6,1):
y=x
x=nsd(a[n],x)
print(n,'-ий krok nsd=',x)
print('Масив натуральних a=',a); print('НСД масиву чисел=',x)
Завдання 2. Створити,
реалізувати, протестувати алгоритм мовою програмування Python3
в середовищі програмування Thonny для поділу
випадкового двоцифрового числа на дві частини у відношенні m:n, де m частин і n частин – це випадкові числа в
межах від 3 до 23.
Реалізація
print('Алгоритм 2 знаходження поділу кожного числа масиву
на частини у відношенні m:n')
import random
a1=[72+1152*n*random.randint(22,
222) for n in range(40, -38,-1) if
n%10==2]
a=[144,1152,864,2016,66912,4704];
m=random.randint(3,23); n=24-m; ZAST1=0;ZAST2=0;
print('Масив натуральних a=',a)
for j in range(0,6,1):
ZAST1=a[j]*m/(m+n)
ZAST2=a[j]*n/(m+n)
print(n,'-ий krok Число a[',j,']=',a[j], 'поділено у відношенні',m,':',n,'отримаємо',ZAST1,':',ZAST2)
Завдання 3. Створити,
реалізувати, протестувати алгоритм мовою програмування Python3
в середовищі програмування Thonny для поділу
випадкового трицифрового числа на три частини у відношенні k:m:n, де k, m і n - випадкові числа в межах від 2
до 10.
Реалізація
print('Алгоритм 3 знаходження поділу кожного числа масиву
на частини у відношенні k:m:n')
import random
a1=[72+1152*n*random.randint(22,
222) for n in range(40, -38,-1) if
n%10==2]
a2=[k for k in
range(100, -28,-1) if k%2==0]
a=[144,1152,864,2016,66912,4704];
m=random.randint(2,10); k=random.randint(2,10); n=11-m-k;
ZAST1=0;
ZAST2=0; ZAST3=0;
print('Масив натуральних a=',a)
for j in range(0,6,1):
ZAST1=a[j]*k/(m+n+k)
ZAST2=a[j]*m/(m+n+k)
ZAST3=a[j]*n/(m+n+k)
print(j,'-ий krok Число a[',j,']=',a[j], 'поділено у відношенні',k,':',m,':',n)
print('отримаємо',round(ZAST1,6),':',round(ZAST2,6),':',round(ZAST3,6))
print('*************')
Завдання 4. Створити,
реалізувати, протестувати алгоритм для пошуку випадкового двоцифрового числа х, яке було поділено на дві частини
у відношенні m:n, де k і m - випадкові числа в межах від 3 до 20,
якщо відомо: k частин становить а одиниць.
Реалізація
print('Алгоритм 4 знаходження пошуку кожного
числа масиву за його частинами у відношенні k:m')
import random
a1=[72+1152*n*random.randint(22,
222) for n in range(40, -38,-1) if
n%10==2]
a2=[k for k in
range(100, -28,-1) if k%2==0]
a=[144,1152,864,2016,6912,4704];
m=random.randint(1,5); k=random.randint(2,5); ZAST1=0;
ZAST2=0;
print('Масив
натуральних чисел a=',a)
for j in
range(0,6,1):
Zuslo=a[j]*(m+k)/(k)
ZAST2=a[j]*(m)/(k)
ZAST1=a[j]
print(j,'-ий krok . Число a[',j,']=',Zuslo,
'поділено у відношенні',k,':',m)
print('отримаємо',round(ZAST1,3),':',round(ZAST2,3))
print('*************')
Завдання 5. Створити, реалізувати, протестувати
алгоритм для пошуку кількості
спільних дільників для m та n, де n і m - випадкові числа/
Реалізація
print('Алгоритм
5 знаходження усіx спільних дільників для двох випадкових чисел')
import random;
m=6912*random.randint(10,200);
n=4704*random.randint(10,200);
m=6912; n=4704; a=[]
print('Число
m=',m); print('Число n=',n)
max1=max(m,n)
for j in
range(1,max1,1):
if m%j==0:
if n%j==0:
h=j
a.append(h)
print('Для двох чисел n=',n,'m=',m,'
cпільний дільник k=',j)
print('Cпільні
дільники у вигляді списку a=',a)
print('Кiлькість
спільних дільників k=',len(a))
Завдання
6. Створити,
реалізувати, протестувати алгоритм мовою
програмування Python3 в середовищі програмування Thonny для знаходження кількості трицифрових чисел, сума
цифр яких дорівнює 14.
Математична модель завдання 5: abc=100*a+10*b+c i перевiрити умови a+b+c=14=5+9+0=4+1+9=3+2+9=2+3+9=…=7+6+1
та
врахувати перестановки
Реалізація.
print('Алгоритм
пошуку кількості 3-цифрових чисел з
сумою цифр 14')
k=0
for a in
range(1,10):
for b in range(0,10):
for c in range(0,10):
if a+b+c==14:
k=k+1
print('Шукане 3-цифрове число
з сумою цифр 14 =', 100*a+10*b+c)
print('Kількість 3-цифрових чисел з сумою цифр 14 =', k)
Завдання 7. Створити,
реалізувати, протестувати алгоритми створення списків мовою програмування Python у середовищі
програмування Thonny, що
складаються з: 1)парних чисел.
Реалізація. Види
сортування списків парних чисел
import random
print('Алгоритм 7 автоматичного створення
парних чисел у масиві або списку')
print('***Простий спосіб, що є функцією списку
list(range(k,m,n)) з лічильником')
Numer=list(range(-32,
32, 2))
print('Простенький
список 3n-чисел in Numer=', Numer, type(Numer))
print('Перший спосіб, що використовує цикл з лічильником')
lst2n1=[m
for m in range(-49, 102,2)] # циклічний генератор для парних чисел
print('Перший
список парних чисел у порядку зростання lst2n1=', lst2n1, type(lst2n1))
print('Другий спосіб, що використовує цикл з лічильником і
розгалуження')
lst2n2=[k
for k in range(100, -28,-1) if k%2==0] # генератор для
парних чисел
print('другий
список парних чисел у порядку спадання lst2n2=', lst2n2, type(lst2n2))
print('Третій спосіб, що використовує генератор випадкових цілих чисел')
lst2n3=[2*n*random.randint(22,
222) for n in range(10, 0,-1) if n%2==0]
print('Третій список
випадкових парних чисел lst2n3=',
lst2n3, type(lst2n3))
lst2n3.reverse() # зміна порядку чисел на протилежний
print('Змінений
список у протилежному порядку lst2n3=', lst2n3,
type(lst2n3))
lst2n3.sort(reverse=True) #
упорядкування чисел у порядку спадання
print('Змінений
список у порядку спадання lst2n3=',
lst2n3, type(lst2n3))
lst2n3.sort() # упорядкування чисел
у порядку зростання
print('Змінений
список чисел у порядку зростання lst2n3=', lst2n3, type(lst2n3))
Протестуйте даний алгоритм декілька разів для: 1) lst2n1=[m for m
in range(2, 102,2)];
2)
lst2n2=[k for k in range(100, -28,-1) if k%4==2]
3)
lst2n3=[6*n*random.randint(22, 222) for
n in range(30, -28,-1) if n%10==2]
Завдання 8. Створити,
реалізувати, протестувати алгоритми створення списків мовою програмування Python у середовищі програмування Thonny, що
складаються з: 1)непарних чисел; 3) чисел кратних 3; 4) чисел, що є
степенями 2; 5) чисел, що степенями 3. 6) чисел, що утворені формулою х(n)=5*n+9.
Реалізація. Статистичні характеристики списків
непарних чисел
import random
print('Алгоритм 8 автоматичного створення
непарних чисел у масиві або списку')
print('Перший спосіб, що використовує цикл з лічильником')
lst3n1=[2*m -1 for
m in range(-8, 12,1)]
print('Перший
список непарних чисел у порядку зростання lst3n1=', lst3n1, type(lst3n1))
print('Кількість
усіх елементів у списку lst3n1=',
len(lst3n1))
print('Кількість
елемента "23" у списку lst3n1=', lst3n1.count(23))
print('Індекс
елемента "21" у списку lst3n1=', lst3n1.index(21))
print('Cума усіх
елементів у списку lst3n1=',
sum(lst3n1))
print('Максимум
усіх елементів у списку lst3n1=',
max(lst3n1))
print('Мінімум
усіх елементів у списку lst3n1=',
min(lst3n1))
print('Cереднє
арифметичне списку lst3n1=', sum(lst3n1)/len(lst3n1))
print('Другий спосіб, що використовує цикл з лічильником і
розгалуження')
lst3n2=[2*k+1
for k in range(100, -28,-1) if k%2==0]
print('Другий
список непарних чисел у порядку спадання lst3n2=', lst3n2, type(lst3n2))
print('Третій спосіб, що використовує цикл з лічильником і
розгалуження')
lst3n3=[1+6*n*random.randint(22,
222) for n in range(40, -38,-1) if
n%10==2]
print('Третій
список чисел у довільному порядку
lst3n3=', lst3n3, type(lst3n3))
lst3n3.remove(lst3n3[1]) # видаляємо із списку елемент lst3n[1]
print('Змінений
список випадкових непарних чисел без 1-го елементу: lst3n3=', lst3n3,
type(lst3n3))
lst3n3.sort(reverse=True)
print('Змінений
список випадкових непарних чисел у порядку спадання lst3n3=', lst3n3,
type(lst3n3))
lst3n3.sort()
print('Змінений
список випадкових непарних чисел у порядку зростання lst3n3=', lst3n3,
type(lst3n3))
Протестуйте даний алгоритм декілька разів для:
1)
lst3n1=[4*m -1 for m in range(-8, 12,1)]
2)
lst3n2=[6*k-1 for k in range(40, -28,-1) if k%3==0]
3
lst3n3=[1+2*n*random.randint(22, 222) for n in range(40, -38,-1) if n%10==7]
Завдання 9. Створити,
реалізувати, протестувати алгоритми створення списків мовою програмування Python у середовищі програмування Thonny, що
складаються з: 1) чисел кратних 3.
Реалізація.
Видалення
та вставлення елементів у списки
import random
print('Алгоритм 9 автоматичного створення 3n-чисел у масиві або
списку')
print('***Перший спосіб, що використовує функцію списку
list(range(k,m,n)) з лічильником')
Numer=list(range(-33,10,3))
print('Простенький
список 3n-чисел in Numer=', Numer, type(Numer))
print('***Другий спосіб, що використовує порожній список та
циклом із лічильником приєднує елементи')
n=10;
S1=[]
for
i in range(10):
S1.append(random.randint(-50,50)) # приєднується
випадкове число у список
S1[i]=3*(2*S1[i]-1) # елемент перетворюється в непарне
3n-число, що кратне 3
print('Початковий
список непарних 3n-чисел S1=', S1, type(S1))
print('***Третій спосіб, що використовує у списку формулу та
цикл з лічильником для неї')
lst4=[6*m
for m in range(-9, 9,1)]
print('Новий
список парних 3n-чисел у порядку зростання lst4=', lst4, type(lst4))
print('***Четвертий спосіб, що використовує цикл з лічильником і
розгалуження')
lst3n2=[k
for k in range(100, -28,-1) if k%3==0]
print('Четвертий
список 3n-чисел у порядку спадання lst3n2=', lst3n2, type(lst3n2))
print('***П’ятий спосіб, що використовує генератор випадкових
чисел)
lst3n3=[3+6*n*random.randint(22,
222) for n in range(40, -38,-1) if
n%10==2]
print('Пятий
список у довільному порядку lst3n3=',
lst3n3, type(lst3n3))
lst3n3.remove(lst3n3[1]) # видаляємо із списку елемент lst3n[1]
print('Змінений
список чисел без 1-го елементу: lst3n3=', lst3n3, type(lst3n3))
lst3n3.sort(reverse=True)
print('Змінений
список чисел у порядку спадання lst3n3=', lst3n3, type(lst3n3))
lst3n3.sort()
print('Змінений
список чисел у порядку зростання lst3n3=', lst3n3, type(lst3n3))
lst3n3[1:3]=[] #зрізу списку присвоюється порожній
список, ці елементи видалені
print('Змінений
список чисел після видалення елементів із списку', lst3n3)
lst3n3[1:3]=[3,
33, 333, 3333] #зрізу списку присвоюється список елементів
print('Змінений
список чисел після вставлення елементів до списку', lst3n3)
Завдання 10. Створити, реалізувати, протестувати алгоритми
створення списків мовою програмування Python у
середовищі програмування Thonny, що виконує сортування елементів списку у порядку спадання та
у порядку зростання.
Реалізація . Сортування елементів у списку
import random
print(' Algorytm 10 сортування
елементів у списках lst1 ')
print('***Оригінальний спосіб створення списку, що використовує
генератор випадкових чисел')
lst1=[3+3*random.randint(5, 55) for n in range(20, -18,-1) if n%2==1]
print('Це
список 3n-чисел у довільному
порядку lst1=', lst1, type(lst1))
lst1.remove(lst1[1]) #
видаляємо із списку елемент lst3n[1]
print('Змінений список чисел без 2-го елементу:
lst1=', lst1, type(lst1))
lst1.sort(reverse=True) #
сортування у порядку спадання lst1
print('Змінений список чисел у порядку спадання
lst1=', lst1, type(lst1))
lst1.sort()
# сортування у порядку
зростання lst1
print('Змінений список чисел у порядку зростання
lst1=', lst1, type(lst1))
Протестуйте даний алгоритм декілька разів, якщо:
1) lst1=[1+2*random.randint(7, 57) for n in range(40, -10,-2) if n%4==1]
2) lst1=[3+8*random.randint(1, 99) for n in range(90, 60,-3) if n%5==2]
3) lst1=[4+7*random.randint(90, 180) for n in range(1, 60,4) if n%6==3]
Завдання 11. Створити, реалізувати, протестувати алгоритми
створення списків мовою програмування Python у
середовищі програмування Thonny, що виконує видалення та вставлення елементів у списку.
Реалізація. Видалення та вставлення елементів у списку
import random
print(' Algorytm 11 видалення та вставлення над елементами в списках lst ')
print('***Оригінальний спосіб створення списку, що використовує генератор випадкових чисел')
lst2=[1+2*n*random.randint(0, 10) for n in range(40, -38,-1) if n%10==2]
print('Початковий список чисел після видалення елементів із
списку', lst2)
lst2[2:5]=[] #зрізу списку присвоюється порожній список, ці елементи
видалені
print('Змінений список чисел після видалення двох елементів
із списку', lst2)
lst2[0:3]=[0, 0, 0, 0]
#зріз списку видаляється і присвоюється список
нових 0-елементів
print('Змінений список чисел після видалення і вставлення
чотирьох елементів до списку', lst2)
Протестуйте даний алгоритм декілька разів, якщо:
1) lst1=[1+2*random.randint(7, 57) for n in range(40, -20,-2) if n%11==0]
2) lst1=[3+8*random.randint(1, 99) for n in range(90, 60,-3) if n%3==2]
3) lst1=[4+7*random.randint(90, 180) for n in range(1, 60,4) if n%4==1]
Завдання 12. Створити, реалізувати, протестувати алгоритми
створення списків мовою програмування Python у
середовищі програмування Thonny, що виконує вставлення
елементів у списку без видалення між іншими елементами.
Реалізація. Вставлення елементів у списку без видалення
import
random
print(' Algorytm 12 вставлення числових
елементів у список lst1 ')
list1 = [1, 1, 1]
print(' початковий список list1=', list1)
list1.extend([0, 0, 0]) # вставлення елементів в кінець списку
print('Змінений список після вставлення чисел в кінець ', list1)
list2 = [2, 2, 2]
print(' початковий список list2=', list2)
list2.insert(1, 5) # вставлення елемента між існуючими елементами
print ('Змінений список після вставлення елемента 5 ', list2)
list3 = [3, 3, 3]
print(' початковий список list3=', list3)
list3.insert(1, [0,0,0]) # вставлення елемента між існуючими елементами
print ('Змінений список після вставлення елемента [0,0,0] =', list3)
for k in range(0,len(list1)): # цикл для вставлення елемента між існуючими елементами
list3.insert(k, list1[k]) # вставлення елемента між існуючими елементами
list3.extend([k-1, k, k+1]) # вставлення елемента в кінець списку
print ('Змінений список після циклу вставлення елемента =', list3)
print('Виявлення 8-го елемента у списку - це ', list3.pop(7))
Протестуйте даний алгоритм декілька разів, якщо:
1) list3 = list[range(0, 9,2]
2)
list3 = [3+8*n for n in range(90, 60,-3) if n%3==2]
3)
list3=[5+9*random.randint(90,
180) for n in range(1, 70,7) if n%2==1]
Завдання 13. Створити, реалізувати, протестувати алгоритми
створення списків мовою програмування Python у
середовищі програмування Thonny, що виконує вставлення
елементів у порожній список.
import
random
print(' Algorytm 13 вставлення і видалення числових
елементів у список lst1 ')
list2 = [4, 4, 4, 4]
print(' початковий
список list2=', list2)
list2.extend([400,
4000, 40000]) # вставлення
елементів в кінець списку
print('Змінений
список після вставлення list2.extend([400, 4000, 40000])=', list2)
list1 =
[2, 2, 2,2,2,2]
print(' Початковий
список list1=', list1)
list1.insert(3,7000) # вставлення елемента між існуючими
елементами
print ('Змінений
список після вставлення
list1.insert(3,7000)=', list1)
print('Показ
елемента за його індексом list1.pop(3)=', list1.pop(3)) # показ індексу за відомим елементом списку
list3 = [2, 9, 8]
print('Початковий
список list3=', list3)
list3.clear() # очищення списку
чисел до порожнього
print ('Змінений
список, тобто list3.clear() повне очищення списку : ', list3)
my_list = []
for k in range(0,
50, 8): #цикл для вставлення
елемента у порожній список елемента
my_list.append(k) #вставлення елемента у порожній список
елемента
print (' Наповнений
список після циклу my_list=', my_list)
my_list.append(3) #вставлення праворуч у список елемента
print ('Змінений
список вставлення елемента my_list=', my_list)
# [1, 3]
my_list.remove(32) # видалення елемента 1 за першим
індексом 0
print (' Змінений
список після видалення елемента
my_list.remove(32)=', my_list)
Протестуйте даний алгоритм декілька разів, якщо:
1) list1 = list[range(90, -9,-10]
2)
list1 = [6-7*n for n in range(70, 40,-5) if n%4==2]
3)
list1=[7+8*random.randint(95, 185) for n in range(42, 70,2) if n%3==0]
vinnser@gmail.com
*****
Немає коментарів:
Дописати коментар