пʼятниця, 8 жовтня 2021 р.

11.10.2021 -17.10.2021 Кодування масивів мовою Python

 

11.10.2021 -17.10.2021

 

Тема: Використання списків для кодування масивів мовою Python

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

Читаємо алгоритми мовою Python

1)      Пояснити, що виконує даний алгоритм: 

n=int(input()) 

if n>0: 

    print(n+1) 

else: 

    print(n) 

2) Пояснити, що виконує даний алгоритм: 

 

n=int(input()) 

if n>=0: 

    print(n+1) 

else: 

    print(n-2) 

3) Пояснити, що виконує даний алгоритм: 

 

n=int(input()) 

if n>0: 

    print(n+1) 

elif n==0: 

    print(10) 

else: 

    print(n-2) 

4) Пояснити, що виконує даний алгоритм: 

 

a,b,c=map(int,input().split()) 

if a>0 and b>0 and c>0: 

    print(3) 

elif a>0 and b>0 and c<0: 

    print(2) 

elif a>0 and b<0 and c>0: 

    print(2) 

elif a<0 and b>0 and c>0: 

    print(2) 

elif a>0 and b<0 and c<0: 

    print(1) 

elif a<0 and b>0 and c<0: 

    print(1) 

elif a<0 and b<0 and c>0: 

    print(1) 

else: 

    print(0) 

 

5) Пояснити, що виконує даний алгоритм: 

 

a,b,c=map(int,input().split()) 

if a>0 and b>0 and c>0: 

    print(3) 

elif a>0 and b>0 and c<0: 

    print(2) 

elif a>0 and b<0 and c>0: 

    print(2) 

elif a<0 and b>0 and c>0: 

    print(2) 

elif a>0 and b<0 and c<0: 

    print(1) 

elif a<0 and b>0 and c<0: 

    print(1) 

elif a<0 and b<0 and c>0: 

    print(1) 

elif a<0 and b<0 and c<0: 

    print(-3) 

elif a>0 and b<0 and c<0: 

    print(-2) 

elif a<0 and b>0 and c<0: 

    print(-2) 

elif a<0 and b<0 and c>0: 

    print(-2) 

elif a<0 and b<0 and c>0: 

    print(-1) 

elif a<0 and b>0 and c<0: 

    print(-1) 

elif a>0 and b<0 and c<0: 

    print(-1) 

else: 

    print(0) 

6)  Пояснити, що виконує даний алгоритм: 

 

a,b=map(int,input().split()) 

if a>0 and b<0: 

    print('a') 

elif a<0 and b>0: 

    print('b') 

else: 

    print('a=b') 

7) Пояснити, що виконує даний алгоритм: 

 

a,b=map(int,input().split()) 

if a>0 and b<0: 

    print(b) 

else: 

    print(a) 

 

8) Пояснити, що виконує даний алгоритм: 

 

a,b=map(int,input().split()) 

if a>0 and b<0: 

    print(a,b) 

else: 

    print(b,a) 


Поняття  про тип даних "СПИСКИ"

Cписок(List) - це тип даних, що представляє собою упорядкований набір елементів. Як правило, елементи одного списку повинні мати однаковий тип. Наприклад, список рядків символів, список цілих чисел. Приклади списків:

a = [ "Андрій", "Віра", "Даша", "Коля", "Юра"]

Тут створили список з ім'ям a і елементами строкового типу.

b = [17, 409, 88]

Тут створили список з ім'ям b і елементами - цілими числами.

Список має: ім’я, та елементи. Елементи списку мають індекси(порядковий номер у списку). Наприклад, А[5] - це п’ятий елемент спику А

Списки можна створювати різними способами.

1) Перерахуванням всіх елементів (цей спосіб був розглянутий вище):

a = [ "Андрій", "Віра", "Даша", "Коля", "Юра"]

Можна створити порожній список:

a = []

2) За допомогою генератора списку:

a = [0] * 5

Вийде список, що складається з п'яти нулів: [0, 0, 0, 0, 0].

a = [i for i in range (10)]

Вийде список [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

a = [i * i for i in range (10)]

Вийде список [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]


3) Шляхом введення елементів з клавіатури (кожен елемент з нового рядка):

a = [0] * 5

for i in range (5):

       print ( "a [", i, "] =", end = "   ")

      a [i] = int (input ())

Запустіть цю програму і створіть список.

4) Шляхом введення елементів з клавіатури (всі елементи в одному рядку через пропуск). Для цього використовується метод a.split (), який повертає список рядків, які вийдуть, якщо вихідну рядок розрізати на частини по прогалин:

s = input () # користувач вводить рядок "1 2 3"

a = s.split ()

print (a)

Виведення: [ '1', '2', '3']


Cпособи виведення списку

Списки можна виводити різними способами.

1) Найпростіший спосіб - просто дати команду вивести список:

b = [17, 409, 88]

print (b)

Виведення: [17, 409, 88]

2) Виведення кожного елемента списку по-окремо:

a = [ "Андрій", "Віра", "Даша", "Коля", "Юра"]

for i in range (5):

        print (a [i])

3) Виведення  кожного елемента списку по-окремо в одному рядку:

a = [ "Андрій", "Віра", "Даша", "Коля", "Юра"]

for i in range (5):

         print (a [i], end = "      ")

4) Виведення  елементів списку без звернення до індексів елементів:

fruits = [ "Яблуко", "Банан", "Груша"]

for x in fruits:

           print (x, end = "    ")

Опрацювання списків різними способами зміни його елементів списку

a = [1, 2, 3, 4, 5, 6]

for i in range (6):

       if a [i]% 2 == 0:

       a [i] = 0

print (a)

Висновок: [1, 0, 3, 0, 5, 0]

2) Можна додавати елементи в кінець списку. Для цього використовується метод a.append (x):

a = [1, 2, 3]

a.append (4)

print (a)

Виведення: [1, 2, 3, 4]

3) Чи можна розширювати список, додаючи в його кінець елементи іншого списку. Для цього використовується метод a.extend (b):

a = [1, 2, 3]

b = [4, 5]

a.extend (b)

print (a)

Виведення: [1, 2, 3, 4, 5]

4) Списки можна копіювати:

a = [1, 2, 3]

b = a

print (b)

5) Функція знаходження довжини списку len (a):

a = [ "Яблуко", "Банан", "Груша"]

x = len (a)

print (x)

Виведення: 3

6) Заповнення списку випадковими елементами:

from random import randint

x = 7

a = [0] * x

for i in range (x):

     a [i] = randint (0,100)

7) Перестановка елементів списку в зворотному порядку. Метод a.reverse ():

a = [0, 1, 2, 3, 4, 5]

a.reverse ()

print (a)

Виведення: [5, 4, 3, 2, 1, 0]

8) Сортування списку. Функція sorted (a):

По зростанню:

animals = [ "кіт", "їжак", "борсук", "собака", "свиня"]

animals = sorted (animals)

print (animals)

Виведення: [ 'борсук', 'їжак', 'кіт', 'свиня', 'собака']

По спаданню:

a = [5, 65, 14, 700, 8]

a = sorted (a, reverse = True)

print (a)

Виведення: [700, 65, 14, 8, 5]


Завдання для самостійного опрацювання юним програмістом


1)      Створити список своїх улюблених фільмів. Вивести список трьома способами: а) в рядок; б) в стовпчик; в) в рядок через кому.

2)      Ввести з клавіатури список прізвищ письменників. Відсортувати список в алфавітному порядку і вивести його.

3)      Створити список з п'яти елементів. Заповнити його випадковими числами. Вивести цей список. Знайти і вивести суму його елементів.

4)      Створити список з десяти елементів. Заповнити його випадковими числами. Вивести цей список. Вивести найбільший елемент списку.

5)      Створити список з десяти елементів. Заповнити його випадковими числами. Замінити всі непарні числа нулями. Вивести вихідний і вийшов списки.

6)      Заповнити масив з 10 елементів випадковими числами в інтервалі [-100,100] і переставити елементи так, щоб всі позитивні елементи стояли в початку масиву, а всі негативні і нулі - в кінці. Приклад: вихідний масив: 20 -90 15 -34 10 0; результат: 20 15 10 -90 -34 0.

7)      Заповнити масив а випадковими числами, відібрати в масив b все числа, менші п'яти. Вивести обидва масиви.



      Запитання від учнів до учителя

Запитання 1. Як записати декілька різних алгоритмів мовою Python за допомогою циклу for, щоб вивести всі парні числа від 100 до 200?

Відповідь:  Обчислюємо дві межі індексування: 1)нижня межа: 100//2=50  2)верхня межа:  200//2=100.

 

1-ий спосіб генерування парних чисел в межах 99<2*k<201.

A=[2*k for k in range(50,101,1)]

print('Парні числа 99<2k<201 вигляді списку:',A)

2-ий спосіб генерування парних чисел в межах 99<2*j<201.

N=['None']*51

for j in range(0, 51, 1):

        N[j]=100+2*j

print('Парні числа 99<2*j<201 вигляді списку:',N)

3-ій спосіб генерування парних чисел в межах 99<2*m<201.

import random

H=[98+k*random.randint(2,2) for k in range(1,52,1)]

print('Парні числа 99<2*m<201 вигляді списку:',H)

4-ий  спосіб генерування парних чисел 99<2*p<201.

for j in range(200, 99, 2):

       print(j, end='  ')

5-ий  спосіб генерування парних чисел.

m=200

for j in range(-m, -m+101, 2):

    print(100+m+j, end='  ')

Запитання 2. Як записати декілька різних алгоритмів мовою Python за допомогою циклу for, щоб вивести всі 6k+1-числа від 100 до 200?

Відповідь:  Обчислюємо дві межі індексування: 1)нижня межа: 100//6=16  2)верхня межа:  200//6=34.

1-ий спосіб генерування парних чисел в межах 99<6*k+1<201.

A=[6*k+1 for k in range(17,34,1)]

print('Парні числа 99<6*+1k<201 вигляді списку:',A)

2-ий спосіб генерування парних чисел в межах 99<6*k+1<201.

m=205

for j in range(-m, -m+101, 6):

    print(103+m+j, end='  ')

 

Запитання 3. Як записати декілька різних алгоритмів мовою Python за допомогою циклу for, щоб вивести 10 перших ступенів двійки?

Відповідь:  1-ий cпосіб.

for j in range(1, 11):

                  print(2**j, end='  ')

         2-ий cпосіб.

m=1

for j in range(1, 11):

          m=m*2

                      print(m, end='  ')

Запитання 4. Як записати алгоритм для введення з клавіатури 7 натуральних чисел. І вивести: 1)найбільше з них. 2)найменше з них, 3) суму усіх чисел, 4) середнє арифметичне усіх чисел.

Відповідь.

print('Введіть сім натуральних чисел в один рядок через один пропуск')

a1,a2,a3,a4,a5,a6,a7=map(int, input().split())

A=[a1,a2,a3,a4,a5,a6,a7]

print('Найбільше  число в А - це максимум множини чисел =',max(A))

print('Найменше  число в А - це мінімум множини чисел =',min(A))

print('Середнє арифметичне  для А - це середина множини чисел =',sum(A)/len(A))

 

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

Опрацювання способів створення  двовимірних масивів на числових типах даних

 

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

Реалізація.

import random

midlle=0

def rand_matrix(m,n):     #це процедура для створення матриці із чисел

    A=[[random.randint(0,9) for j in range(m)] for i in range(n)]

    return A

def show_matrix(A):    #це процедура для друкування матриці із чисел

    for a in A:

        for b in a:

            print(b, end="   ")

        print()

def linear_matrix(m,n,k,t):       #це процедура для утворення нової МАТРИЦІ

    for i in range(m):

        for j in range(n):

            S[i][j]=k*A[i][j]+t*B[i][j]

    return S

m=5; n=5; k=10;t=-10; midlle=0; A=rand_matrix(m,n); print('Matrix A=');show_matrix(A);

B=rand_matrix(m,n); print('Matrix B=');show_matrix(B); S=rand_matrix(m,n);print('Matrix S='); show_matrix(S);

linear_matrix(m,n,k,t)

print("Усі елементи лінійної комбінації двох матриць S(m,n)=",k,'*A+',t,"*B"); show_matrix(S)

for i in range(m):

        for j in range(n):

            midlle+=S[i][j]

print("Сума усіх елементів", midlle)

midlle=midlle/(m*n)

print("Середнє арифметичне усіх елементів лінійної комбінації двох матриць S(m,n)=",k,'*A+',t,"*B  midlle=", midlle)

Протестуйте даний алгоритм для таких даних 1) m=7; n=9; k=1001; t=-10001; 2) m=5; n=10; k=2002; t=-20002;

Завдання 2. Створити та протестувати алгоритм створення, виведення постійного  числового масиву у вигляді  таблиці чисел, розміром mхn. Змінити  усі  елементи новствореного масиву на їхні квадрати.

Реалізація.

import random

def rand_matrix(m,n):     #це процедура для створення матриці із чисел

    H=[[random.randint(0,9) for j in range(m)] for i in range(n)]

    return H

def show_matrix(A):    #це процедура для друкування матриці із чисел

    for a in A:

        for b in a:

            print(b, end="       ")

        print()

def linear_matrix(m,n,k,t):       #це процедура для СЕРЕДННЬОГО АРИФМЕТИЧНОГО ЕЛЕМЕНТІВ МАТРИЦІ

    for i in range(m):

        for j in range(n):

            S[i][j]=(k+t)*H[i][j]+(k-t)*G[i][j]

    return S

m=5; n=5; k=101;t=-2002; H=rand_matrix(m,n); print('Matrix H=');show_matrix(H);

G=rand_matrix(m,n); print('Matrix G=');show_matrix(G);  S=rand_matrix(m,n);print('Matrix S='); show_matrix(S);

linear_matrix(m,n,k,t)

print("Усі елементи лінійної комбінації двох матриць S(m,n)="); show_matrix(S)

for i in range(m):

        for j in range(n):

            S[i][j]=(S[i][j])**2

print("Усі елементи зміненої матриці S(m,n)=(",k+t,'*H+',k-t,"*G)"); show_matrix(S)

Протестуйте даний алгоритм для таких даних 1) m=2; n=2; k=2002; t=-20002; 2) m=5; n=3; k=3003; t=-30003;

Завдання 3. Створити та протестувати алгоритм створення, виведення постійного  числового масиву у вигляді  таблиці чисел, розміром mхn. Змінити  усі  елементи новствореного масиву за їхніми властивостями остач при поділу на 4 відповідно до даного зразкa.

Реалізація.

import random

def rand_matrix(m,n):     #це процедура для створення матриці із чисел

    Z=[[random.randint(-9,9) for j in range(m)] for i in range(n)]

    return Z

def show_matrix(U):    #це процедура для друкування матриці із чисел

    for a in U:

        for b in a:

            print(b, end="       ")

        print()

def linear_matrix(m,n,k,t):       #це процедура для СЕРЕДННЬОГО АРИФМЕТИЧНОГО ЕЛЕМЕНТІВ МАТРИЦІ

    for i in range(m):

        for j in range(n):

            S[i][j]=(3*k+4*t+2)*X[i][j]+(5*k-6*t+1)*Y[i][j]

    return S

m=5; n=5; k=-30003;t=-20001;

X=rand_matrix(m,n); print('Matrix X=');show_matrix(X);

Y=rand_matrix(m,n); print('Matrix Y=');show_matrix(Y);

S=rand_matrix(m,n);print('Matrix S='); show_matrix(S);

linear_matrix(m,n,k,t)

print("Усі елементи лінійної комбінації двох матриць S(m,n)="); show_matrix(S)

for i in range(m):

        for j in range(n):

            if   S[i][j]%4==0:

                 S[i][j]=(S[i][j])*1000

            if   S[i][j]%4==1:

                 S[i][j]=(S[i][j])*20000

            if   S[i][j]%4==2:

                 S[i][j]=(S[i][j])*300000

            if   S[i][j]%4==3:

                 S[i][j]=(S[i][j])*4000000

print("Усі елементи зміненої матриці S(m,n)="); show_matrix(S)

Протестуйте даний алгоритм для таких даних 1) m=3; n=3; k=101; t=-1001; 2) m=4; n=4; k=2000; t=-30000;

Завдання 4. Створити та протестувати алгоритм створення, виведення постійного  числового масиву у вигляді  таблиці чисел, розміром mхn. Змінити  усі  елементи новствореного масиву за їхніми властивостями остач при поділу на 5 відповідно до даного зразкa.

Реалізація.

print('Алгоритм виведення масиву G на екран')

G=[[1,1,1,1,1,1,1,1],[2,2,2, 2,2,2, 2,2],[3,3,3,3,3,3,3,3],[4,4,4,4,4,4,4, 4],[1,2,3,4,5,6,7,8]]

print('Двовимірний масив G має вигляд')

for n in range(5):

    for m in range(8):

        if G[n][m]%5==0:

             G[n][m]=5555

        elif G[n][m]%5==1:

             G[n][m]=1111

        el if G[n][m]%5==2:

             G[n][m]=2222

        elif G[n][m]%5==3:

             G[n][m]=3333

        elif G[n][m]%5==4:

             G[n][m]=4444

        print(G[n][m], end='           ')

    print('     ')  

Протестувати цей алгоритм, від редагувавши його для масиву чисел розміром   1)4х2;   2) 3х6;  3)4х2;   4) 6х6.

 

 Результат виконаної практичної роботи надіслати вашому учителю на електронну скриньку: 

vinnser@gmail.com (Сергій Петрович)



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

Додаткові завдання  для шанувальників програмування

Cтворити алгоритми на Python3 для таких задач:

1. Знайти градусну міру кутів прямокутного трикутника, якщо відомо один його кут, який вводиться з клавіатури.

2. Одна сторона трикутника дорівнює A дм, друга – у N разів коротша за першу, а третя - на 12 дм довша за другу. Знайдіть периметр трикутника.

3. Ламана складається з трьох ланок. Довжина першої ланки дорівнює W см, що на 3,7 см більше за довжину другої ланки і у T разів менше від довжини третьої. Чому дорівнює довжина ламаної?

4. Поле прямокутної форми має площу S а, його ширина – L м. Обчисліть периметр поля.

Примітка. 1 а (ар) = 100 кв. м

5. Учень-невдаха Сашко сів виконувати домашнє завдання і просидів за столом 2 години. З них х хвилин він чухав потилицю і дивився у вікно, у хвилин шукав у письмовому столі гумку, щоб стерти у підручнику з англійської мови карикатуру на свого товариша, на малювання якої він витратив перед цим z хвилин. Решту часу Сашко перекладав англійські слова. Скільки слів він встиг перекласти, якщо переклад одного слова у нього займав 5 хвилин?

6. Якщо на одну шальку терезів посадити Даринку, яка важить n кг, і Тетянку, яка важить на 5 кг більше, а на іншу насипати m кг цукерок, то скільки кілограм цукерок доведеться з'їсти дівчаткам, щоб шальки терезів врівноважились? Дівчатка можуть брати цукерки лише з великої цукерниці, а не з іншої шальки терезів.

7. Визначити, яку заробітну платню одержить на фірмі сумісник за виконану роботу, якщо йому нараховано S грн., а податок становить 20%.

8. Петро задумав число і нікому його не назвав. Друзі спіймали його і примусили подвоїти задумане число, а потім додати до нього 5. І тільки після того, як вони пообіцяли Петрові благодійну допомогу на контрольній з математики, він зізнався, що вийшло число n. Визначте, яке число задумав і приховав від своїх друзів Петро.

9. Із тераріуму втекли х гадюк, у кобр та z гюрз. Довжина кожної гадюки 1 м, кожної кобри - 1 м 30 см, а гюрзи - 1 м 15 см. Яка довжина у сантиметрах отруйних змій втекла з тераріуму?

10. Дано ціле число. Якщо воно є додатне, то додати до нього 1; в іншому разі не змінювати його. Вивести отримане число.

11. Дано ціле число. Якщо воно є додатне, то додати до нього 1; в іншому випадку відняти від нього 2. Вивести отримане число.

12. Дано ціле число. Якщо воно є додатне, то додати до нього 1; якщо від’ємне, то відняти від нього 2; якщо нульовим, то замінити його на 10. Вивести отримане число.

13 . Дано три цілих числа. Знайти кількість додатних чисел в початковому наборі.

14. Дано три цілих числа. Знайти кількість додатних і кількість від’ємних чисел в початковому наборі.

15 . Дано два натуральні числа. Вивести більше з них.

16. Дано два  дробові числа. Вивести порядковий номер меншого з них.

17 . Дано два  цілі числа. Вивести спочатку більше, а потім менше з них.

Немає коментарів:

Дописати коментар