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]
Результати виконання практичної частини надіслати не eлектронну адресу учителя:
vinnser@gmail.com
Немає коментарів:
Дописати коментар