пʼятниця, 17 грудня 2021 р.

20.12.2021 -24.12.2021 Алгоритми для креслення фігур

20.12.2021 -24.12.2021 

Практична робота 1.

Завдання 1. Створити, реалізувати, протестувати мовою програмування Python3  в середовищі програмування Thonny алгоритм для знаходження трійок чисел, що є розв’язками системи рівнянь: xy+yz=a,    yz+xz=b,   xz+xy=c.

Реалізація

print('Алгоритм пошуку трійок(x, y,z), що задовольняють три умови: x*y+y*z=a,  y*z+x*z=b, x*z+x*y=c')

import random;    a=random.randint(8,8);   b=a+1;   c=a-3;    print('a=',a, 'b=',b,'c=',c) ;  w=0

for x in range(-50,50):

    for y in range(-50,50):

        for z in range(-50,50):

            if ((x*y+y*z==a)and(y*z+x*z==b)and(x*z+x*y==c)):

                 w+=1

                 print('x=',x, 'y=',y,'z=',z)

print('Кількість трійок дорівнює', w)

Завдання 2. Створити, реалізувати, протестувати мовою програмування Python3  в середовищі програмування Thonny алгоритм для знаходження трійок чисел, що є розв’язками системи  трьох рівнянь: x2+y2=a,  y2+z2=b, z2+x2=c.

Реалізація

print('Алгоритм пошуку трійок(x, y,z), що задовольняють три умови: x**2+y**2=a,  y**2+z*z=b, z*z+x*x=c')

import random;   a=random.randint(41,41);   b=a-16;   c=b+9;    print('a=',a, 'b=',b,'c=',c);    w=0

for x in range(-50,50):

    for y in range(-50,50):

        for z in range(-50,50):

            if ((x**2+y**2==a)and(y**2+z*z==b)and(z*z+x*x==c)):

                 w+=1

                 print('x=',x, 'y=',y,'z=',z)

print('Кількість трійок дорівнює', w)

Завдання 3. Створити, реалізувати, протестувати мовою програмування Python3  в середовищі програмування Thonny алгоритм для знаходження трійок чисел, що є розв’язками системи  трьох рівнянь: x3+y2=a,  y3+z2=b, z3+x2=c.

Реалізація

print('Алгоритм пошуку трійок(x, y,z), що задовольняють три умови: x**3+y*y=a,  y**3+z*z=b, z**3+x*x=c')

import random;   a=random.randint(43,43);   b=a+46;   c=b+45;  print('a=',a, 'b=',b,'c=',c);    w=0

for x in range(-50,50):

    for y in range(-50,50):

        for z in range(-50,50):

            if ((x**3+y*y==a)and(y**3+z*z==b)and(z**3+x*x==c)):

                 w+=1

                 print('x=',x, 'y=',y,'z=',z)

print('Кількість трійок дорівнює', w)

Завдання 4. Створити, реалізувати, протестувати мовою програмування Python3  в середовищі програмування Thonny алгоритм для знаходження трійок чисел, що є розв’язками системи  трьох рівнянь: x3+y3=a,  y3+z3=b, z3+x3=c.

Реалізація

print('Алгоритм пошуку трійок(xy,z), що задовольняють три умови: x**3+y**3=a,  y**3+z**3=bz**3+x**3=c')

import random

a=random.randint(0,0); b=a-1; c=1;

#a=random.randint(0,0); b=a-+9; c=7;

print('a=',a, 'b=',b,'c=',c); w=0

for x in range(-50,50):

    for y in range(-50,50):

        for z in range(-50,50):

            if ((x**3+y**3==a)and(y**3+z**3==b)and(z**3+x**3==c)):

                 w+=1

                 print('x=',x, 'y=',y,'z=',z)

print('Кількість трійок дорівнює', w)

 

Завдання 5. Створити, реалізувати, протестувати мовою програмування Python3  в середовищі програмування Thonny алгоритм для знаходження трійок чисел, що є розв’язками системи  трьох рівнянь: xyz-yx=a,  xyz-yz =b, xyz-zx =c.

Реалізація

print('Алгоритм пошуку трійок(x, y,z), що задовольняють три умови: x*y*z+y*x=a,  x*y*z+y*z=b, x*y*z+z*x=c')

import random

a=random.randint(0,0); b=0; c=0;

print('a=',a, 'b=',b,'c=',c)

w=0

for x in range(-10,10):

    for y in range(-10,10):

        for z in range(-10,10):

            if ((x*y*z+y*x==a)and(x*y*z+y*z==b)and(x*y*z+z*x==c)):

                 w+=1

                 print('x=',x, 'y=',y,'z=',z)

print('Кількість трійок дорівнює', w)

Завдання 6. Створити, реалізувати, протестувати мовою програмування Python3  в середовищі програмування Thonny алгоритм для знаходження трійок чисел, що є розв’язками системи  трьох рівнянь: x*y*z+y*x**2=a,  x*y*z+y*z**2=bx*y*z+z*x**2=c.

Реалізація

print('Алгоритм пошуку трійок(xy,z), що задовольняють три умови: x*y*z+y*x**2=a,  x*y*z+y*z**2=bx*y*z+z*x**2=c')

import random

a=random.randint(0,0); b=0; c=0;

print('a=',a, 'b=',b,'c=',c)

w=0

for x in range(-10,10):

    for y in range(-10,10):

        for z in range(-10,10):

            if ((x*y*z+y*x==a)and(x*y*z+y*z==b)and(x*y*z+z*x==c)):

                 w+=1

                 print('x=',x, 'y=',y,'z=',z)

print('Кількість трійок дорівнює', w)

Завдання 7. Створити, реалізувати, протестувати мовою програмування Python3  в середовищі програмування Thonny алгоритм для знаходження трійок чисел, що є розв’язками системи  трьох рівнянь: x*y*z+y**2*x**2=a,  x*y*z+y**2*z**2=b, x*y*z+z**2*x**2=c'

Реалізація

print('Алгоритм пошуку трійок(x, y,z), що задовольняють три умови: x*y*z+y**2*x**2=a,  x*y*z+y**2*z**2=b, x*y*z+z**2*x**2=c')

import random

a=random.randint(0,0); b=0; c=0;

print('a=',a, 'b=',b,'c=',c)

w=0

for x in range(-10,10):

    for y in range(-10,10):

        for z in range(-10,10):

            if ((x*y*z+y**2*x**2==a)and(x*y*z+y**2*z**2==b)and(x*y*z+z**2*x**2==c)):

                 w+=1

                 print('x=',x, 'y=',y,'z=',z)

print('Кількість трійок дорівнює', w)

*******************************

Практична робота 2.

Завдання 1. Створити, реалізувати, протестувати алгоритм для пошуку найбільшого спільного дільника  масиву натуральних чисел.

Реалізація

print('Алгоритм 1 знаходження НСД для багатьох чисел')

import random

a=[72,12,24,36,96,84]; 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. Створити, реалізувати, протестувати алгоритм для розподілу випадкового двоцифрового числа на частини у відношенні m:n, де m частин і n частин – це випадкові числа в межах від 3 до 23.

Реалізація

print('Алгоритм 2 знаходження поділу кожного числа масиву на частини у відношенні m:n')

import random

a=[72,12,24,36,96,84];

m=random.randint(3,23); n=24-m; ZAST1=0;ZAST2=0;

print('Масив натуральних a=',a) 

for j in range(0,7,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. Створити, реалізувати, протестувати алгоритм для розподілу випадкового трицифрового числа на частини у відношенні k:m:n, де km і n  - випадкові числа в межах від 2 до 5.

Реалізація

print('Алгоритм 3 знаходження поділу кожного числа масиву на частини у відношенні k:m:n')

import random

a=[72,12,24,36,96,84];

m=random.randint(3,5);   k=random.randint(2,5); 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,3),':',round(ZAST2,3),':',round(ZAST3,3))

    print('*************')

Завдання 4. Створити, реалізувати, протестувати алгоритм для пошуку випадкового двоцифрового числа х,  яке було поділено на частини у відношенні m:n, де k і m  - випадкові числа в межах від 3 до 20, якщо відомо k частин становить а одиниць.

Реалізація

print('Алгоритм 4 знаходження пошуку кожного числа масиву за його частинами у відношенні k:m')

import random

a=[72,12,24,36,96,84];

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=72*random.randint(10,200); n=144*random.randint(10,200);

m=144;  n=72; 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 для знаходження кількості трицифрових чисел, сума цифр яких дорівнює 5.

Математична модель завдання 5 abc=100*a+10*b+c   i перевiрити умови a+b+c=5=5+0+0=4+1+0=3+2+0=2+2+1=3+1+1 та врахувати перестановки

Реалізація.

print('Алгоритм пошуку кількості  3-цифрових чисел з сумою цифр 12')

k=0

for a in range(1,10):

      for b in range(0,10):

          for c in range(0,10):

              if a+b+c==12:

                  k=k+1

                  print('Шукане 3-цифрове число з сумою цифр 12 =', 100*a+10*b+c) 

print('Kількість  3-цифрових чисел з сумою цифр 12 =', k) 


Практична робота 3.

Алгоритми для креслення фігур

Виконати завдання створення алгоритмів з назвою «Художник» на сайті code.org

 

Задача 1. https://studio.code.org/s/20-hour/lessons/5/levels/1

Задача 2. https://studio.code.org/s/20-hour/lessons/5/levels/2

Задача 3. https://studio.code.org/s/20-hour/lessons/5/levels/3

Задача 4. https://studio.code.org/s/20-hour/lessons/5/levels/4

Задача 5. https://studio.code.org/s/20-hour/lessons/5/levels/5



Задача 6. https://studio.code.org/s/20-hour/lessons/5/levels/6



Задача 7. https://studio.code.org/s/20-hour/lessons/5/levels/7



Задача 8. https://studio.code.org/s/20-hour/lessons/5/levels/8



Задача 9. https://studio.code.org/s/20-hour/lessons/5/levels/9



Задача 10. https://studio.code.org/s/20-hour/lessons/5/levels/10



Задача 11. https://studio.code.org/s/20-hour/lessons/7/levels/1



Задача 12. https://studio.code.org/s/20-hour/lessons/7/levels/2




Задача 13. https://studio.code.org/s/20-hour/lessons/7/levels/3



Задача 14. https://studio.code.org/s/20-hour/lessons/7/levels/4



Задача 15. https://studio.code.org/s/20-hour/lessons/7/levels/5



Задача 16. https://studio.code.org/s/20-hour/lessons/7/levels/6




Задача 18. https://studio.code.org/s/20-hour/lessons/7/levels/8



Задача 19. https://studio.code.org/s/20-hour/lessons/7/levels/9





Задача 20. https://studio.code.org/s/20-hour/lessons/7/levels/10


четвер, 9 грудня 2021 р.

13.12.2021-19.12.2021 Нелінійні алгоритми для списків

  

 

13.12.2021-19.12.2021

 

Тема: Нелінійні алгоритми для списків із числовими типами даних мовою Python3

 Теоретична  частина

Двома основними правилами комбінаторики є:

Принцип суми. Якщо множина A містить m елементів, а множина B – n елементіві ці множини не перетинаються, то A+B містить m+n елементів.

Принцип добутку. Якщо множина A містить m елементів, а множина B  містить n елементів, то A*B містить m×n елементівтобто пар (a;b).

Кількість елементів множини A будемо далі позначати |A|.

Ці правила мають також вигляд:

Принцип суми. Якщо об'єкт A можна вибрати m способами, а об'єкт B – n іншими способами, то вибір "або A, або B" можна здійснити m+n способами.

Принцип добутку. Якщо об'єкт A можна вибрати m способами і після кожного такого вибору об'єкт B може бути вибраним n способами, то вибір  пари "A і B" в указаному порядку можна здійснити m×n способами.

Наведені правила очевидним чином узагальнюються на випадки довільних скінченних об'єднань множинщо попарно не перетинаються, та на скінченні декартові добутки.

При розв'язуванні математичних задач іноді використовують метод математичної індукції.

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

Нехай існує послідовність тверджень Т1, Т2, Т3 , Т4, … причому:

1) Безпосередньою перевіркою впевнюютьсящо твердження Т1, Т2, Т3, Т4, …, Тк істинні;

2) Припускаєтьсящо деяке твердження Тк істиннетоді на основі  цього припущення  доводиться, що наступне твердження Тк+1 також істинне.

3) Тоді стверджуєтьсящо всі твердження цієї послідовності істинні.

Такий спосіб міркувань називають методом математичної індукції. При цьомудоведення істинності твердження Т1, Т2, Т3, Т4, …, Ткназивають базою індукції, а доведення того, що з істинності твердження  Тк випливає істинність твердження Тк+1називають індукційним кроком.

Метод математичної індукції можна застосовувати не тільки для доведенняале і для означення послідовностейЯкщо ми означимо перший член послідовностіі, припустивши; що к-ий член вже означений, за допомогою нього означимо (к+1)-ий, то згідно принципу математичної індукції, вся послідовність буде означеноюТакий спосіб утворення послідовності називають рекурентним.

Існують й інші форми принципу математичної індукціїІноді зручно починати індукцію не з доведення істинності Т1, а з доведення істинності деякого Тк. Принцип індукції    еквівалентний    такій    аксіомі:    в    довільній непустій множині натуральних чисел є найменше.


 Задачі Мудрої Сови:

1. Цеглина важить  один кілограм плюс ще півцеглиниСкільки важить цеглина?

Відповідь: 2 кг.  Адже півцеглини - це 1 кілограм, а півцеглини+півцеглини= ціла цеглина. 

2. Цеглина важить  7 кілограм  плюс ще півчверті цеглиниСкільки важить цеглина?

Відповідь: 8 кг.  Адже півчверті цеглини - це 1/8 цеглини масою 1 кілограм,

 бо  7/8 цеглини+1/8 цеглини= ціла цеглина=7+1=8 кг. 

3. Цеглина важить півтора кілограми  плюс ще третина цеглиниСкільки важить цеглина?

Відповідь: 2кг 250 г. Адже третина цеглини - це 1/3 цеглини масою 750 грам,

 бо  2/3 цеглини+1/3 цеглини= ціла цеглина=1 кг 500 г+ 750 г= 2кг 250 г. 

4. Три подруги одягли сукні різних кольорів. Одна − блакитну, друга − білу, і третя − зелену. Їхнє взуття було не таких самих кольорів, як сукні; тільки в Олі колір взуття був  однаковий. Наталка була в зелених босоніжках. Сукня і взуття Валі не були білими. Хто і як був одягнений?

Розв’язання: Зрозуміло, що колір Валиного взуття блакитний. Отже, Оля була у білій сукні і білих босоніжках. Наталка одягла блакитну сукню, а Валя – зелену.

5. Скільки існує двоцифрових  натуральних чисел, обидві цифри яких розташовані у зростаючому порядку?

Розв’язання:  У другому десятку їх 8, у третьому десятку – 7, у четвертому десятку  - 6, і так далі. 8+7+.....+ 2+1=36 двоцифрових чисел?

6. Довести, що серед 5 осіб принаймні двоє з них мають однакову кількість знайомих.

Розв’язання:  Помістимо 5 осіб у „клітки” з номерами 0,1,2,3,4, де номер „клітки” відповідає кількості знайомих особи. Зауважимо, клітки з номерами 0 та 4  не можуть бути заповнені одночасно, бо якщо є особа, що не знайома ні з ким, тоді клітка під номером 4 порожня. Отже 5 осіб розміщені в чотирьох клітках. Принаймні дві особи знаходяться в одній клітці., тобто мають однакову кількість знайомих.

 7. Дано порожню клітинкову таблицю 3х3. Заповнити її всіма цифрами, крім 0, так щоб по горизонталям, по вертикалям, по діагоналям була однакова сума. Тобто, треба  створити магічний квадрат розміром 3х3 із чисел 1,2,3,4,5,6,7,8,9.

Розв'язування.  1+9=2+8=3+7=6+4=10.   Середнє серед цих цифр, це 5.

Зрозумілощо треба додати усі цифри 1+2+3+4+5+6+7+8+9= ? так, отримаємо 45. 

Це число 45 розділити на 3 отримати 15. Отже сума по горизонталям, по вертикалям, по діагоналям рівна 15. Середнє серед цих цифр, це 5, повинна стояти в центральній клітинці.

 Тоді в сусідній з нею клітинках повинні стояти непарні цифри:  1+9=3+7. В кутових клітинках повинні  стояти парні числа: 6+4=2+8

Знайшовши один  такий набір  можна отримати ще вісім  таких квадратів за допомогою повороту навколо центральної клітинки.

                                

 

4

9

2

3

5

7

8

1

6

 

                                                                       

 

9

 

3

5

7

 

1

 

   

                                            

  

Задача 8-а. Чи можна розміняти 25 грн за допомогою десяти купюр вартістю 1, 3 та 5 грн?

Розв'язання цієї задачі грунтується на простому спостереженні:   сума парної кількості непарних чисел є парною: 1+3=4;  1+3+5+1=10. Узагальнення цього факту виглядає так: парність суми кількох чисел залежить лише від парності числа непарних доданків: якщо кількість непарних доданків є (не)парна, то і сума також є (не)парною. Отже, розміняти 25 грн не можна, бо десять довільних непарних чисел завжди дають  парну суму, проте 25 - це непарне число. Відповідь: не можна!

Задача 8-б. У заданій неправильній рівності   ХІ + І = Х  не треба перекладати сірникиале як зробити цю правильної

Розв’язанняПеревернути її знизу вгоруОтримаємо, Х=І+ІХ.

Задача 9. У заданій неправильній рівності   Х- І = І треба перекласти сірникале так, щоб зробити цю рівність правильної. 

Розв’язанняЗнак мінус поставити одиницею на початок. Отримаємо множення одиницьІ Х І І.

Задача 10. У заданій буквеній  рівності   ПЛЯЖ+ШЛЯХ=ХВИЛЯ треба замінити букви цифрами, але так, щоб зробити цю рівність правильної і при цьому однаковим буквам відповідають рівні цифри, а різним буквам відповідають нерівні цифри. 

Розв’язання3894+6895=10789, або 5687+4681=10368.

Задача 11. У заданій буквеній  рівності   БОРЩ+КОРЖ=ОБІД треба замінити букви цифрами, але так, щоб зробити цю рівність правильної і при цьому однаковим буквам відповідають рівні цифри, а різним буквам відповідають нерівні цифри. 

Розв’язання3651+2657=6208, 2657+ 3651=6308.

Задача 12.  У заданій буквеній  рівності   СИР+РИС=ЇЖА треба замінити букви цифрами, але так, щоб зробити цю рівність правильної і при цьому однаковим буквам відповідають рівні цифри, а різним буквам відповідають нерівні цифри. 

Розв’язання273+372=645, або 293+392=685.

Задача 13. У заданій буквеній  рівності   РАК+БУГ=РІКА треба замінити букви цифрами, але так, щоб зробити цю рівність правильної і при цьому однаковим буквам відповідають рівні цифри, а різним буквам відповідають нерівні цифри. 

Розв’язання152+973=1025.


14. Шість однакових діжок вміщують 28 відер води. Скільки відер води можуть вмістити таких 15 діжок?

Розв’язання. 28:2=14 відер вміщують три діжки(6:2=3).

                       14·5=70 відер води вміщують 15 діжок(3·5=15).

Відповідь: 70 діжок.



Практична  частина

 

Завдання 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, де km і 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(7040,-5) if n%4==2]

3)    list1=[7+8*random.randint(95, 185)  for n in range(4270,2) if n%3==0]

 Результати виконання практичної частини надіслати не eлектронну адресу учителя:

vinnser@gmail.com




*****

Додаткові завдання на розвиток кмітливості