субота, 20 лютого 2021 р.

Операції зі списками на Python3.

 

 Операції зі списками на Python3. 



Завдання 0.  Створити алгоритм на Python3  для утворення списку із випадкових чисел. потім знайти  суму усіх чисел, що є у списку, та  добуток усіх чисел, що є у списку.

Реалізація

import random

print("Списки з випадковими числами")

def rand_vector(n):

    r=['None']*n 

    for i in range(0,n):

        r[i]=random.randint(-25,25)

    return r

def mult(a):

    lst =a

    val = 1

    for i in range(0,len(lst)):

        val=(val*lst[i])

    return val

k=rand_vector(8)

m=sum(k);  n=mult(k)

print(k, "cума чисел y списку",m);

print(k, "добуток чисел y cписку",n)

print("********Особливе множення************")

A=[1,2,3,4]

res=[i*j for i in A for j in A]

print(A, "множення чисел в списку",res)

res+=[i*j for i in A for j in A]

print(A, "множення чисел в списку",res)


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

Списки з випадковими числами

[15, 22, -2, -3, 15, 15, -1, 23] cума чисел y списку 84

[15, 22, -2, -3, 15, 15, -1, 23] добуток чисел y cписку -10246500

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

[1, 2, 3, 4] множення чисел в списку [1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16]

[1, 2, 3, 4] множення чисел в списку [1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16, 1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16]


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


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

Реалізація.


import random

print("Cписок із двох чисел або одновимірний масив")

def rand_vector(n):

    r=['None']*n

    for i in range(0,n):

        r[i]=random.randint(-200,200)

    return r

def summa_vector(a,b,c,d):

    r=['None']*2

    for i in range(0,2):

        r[i]=(a/b)*q[i]+(c/d)*p[i]

    return r

def scaljar_vector(a,b):

    s=0

    for i in range(0,2):

        s=s+a[i]*b[i]

    return s

def norma_vector(a,b):

    s=((a[0]-b[0])**2+(a[1]-b[1])**2)**0.5

    return s

q=rand_vector(2); p=rand_vector(2); g=rand_vector(2);

sortq=sorted(q); sortp=sorted(p); sortg=sorted(g);

s=sortq+sortp+sortg;  sorts=sorted(s);

M=summa_vector(3,8,-7,16)

GQ=scaljar_vector(g,q); PQ=scaljar_vector(p,q); PG=scaljar_vector(p,g);

QG=norma_vector(g,q); QP=norma_vector(p,q); GP=norma_vector(p,g);

H=['None']*3; H[1]=QG; H[2]=QP; H[0]=GP;

print("Координати точки Q:",q)

print("Координати точки P:",p)

print("Координати точки G:",g)

print("Три скалярні добутки  GQ, PG, PQ:",GQ, PG, PQ)

print("Довжина сторони QG: ",QG);

print("Довжина сторони QP:", QP);

print("Довжина сторони GP: ",GP);

print("Список довжин сторін:",H);

a=max(H); b=min(H); c=QG+QP+GP-a-b

if b+c>a:

    print("На цих точках існує трикутник")

else:

    print("На цих точках не утвориться трикутник")


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

Трикутник з випадковими координатами

Координати точки Q: [-97, 44]

Координати точки P: [-156, -163]

Координати точки G: [-23, 32]

Довжина сторони QG:  74.96665925596525

Довжина сторони QP: 215.24404753674375

Довжина сторони GP:  236.03813251252433

Список довжин сторін: [236.03813251252433, 74.96665925596525, 215.24404753674375]

На цих точках існує трикутник

На цих точках існує тупокутний трикутник

Площа трикутника дорівнює: 8013.000000000002

Периметр трикутника дорівнює: 526.2488393052333


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

 

Завдання 2. Створити алгоритм  мовою Python3 для визначення виду трикутника, який заданий трьома точками з випадковими координатами в декартовій системі координат в середовищі програмування Thonny.

Реалізація.

import random

print("Трикутник з випадковими координатами")

def rand_vector(n):

    r=['None']*n

    for i in range(0,n):

        r[i]=random.randint(-200,200)

    return r

def norma_vector(a,b):

    s=((a[0]-b[0])**2+(a[1]-b[1])**2)**0.5

    return s

q=rand_vector(2); p=rand_vector(2); g=rand_vector(2);

QG=norma_vector(g,q); QP=norma_vector(p,q); GP=norma_vector(p,g);

H=['None']*3; H[1]=QG; H[2]=QP; H[0]=GP;

print("Координати точки Q:",q)

print("Координати точки P:",p)

print("Координати точки G:",g)

print("Довжина сторони QG: ",QG);

print("Довжина сторони QP:", QP);

print("Довжина сторони GP: ",GP);

print("Список довжин сторін:",H);

a=max(H); b=min(H); c=QG+QP+GP-a-b

if b+c>a:

    print("На цих точках існує трикутник")

else:

    print("На цих точках не утвориться трикутник")

if (b**2+c**2>a**2)and(b+c>a):

    print("На цих точках існує гострокутний трикутник ")

if (b**2+c**2==a**2)and(b+c>a):

    print("На цих точках існує прямокутний трикутник")

if (b**2+c**2<a**2)and(b+c>a):

     print("На цих точках існує тупокутний трикутник")

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

Трикутник з випадковими координатами

Координати точки Q: [-48, -125]

Координати точки P: [-34, 90]

Координати точки G: [16, -32]

Довжина сторони QG:  112.89375536317321

Довжина сторони QP: 215.45533179756774

Довжина сторони GP:  131.84839779079607

Список довжин сторін: [131.84839779079607, 112.89375536317321, 215.45533179756774]

На цих точках існує трикутник

На цих точках існує тупокутний трикутник

Площа трикутника дорівнює: 6229.000000000001

Периметр трикутника дорівнює: 460.19748495153704


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

Завдання 3. Створити алгоритм  мовою Python3 для визначення периметру та площі трикутника, який заданий трьома точками з випадковими координатами в декартовій системі координат в середовищі програмування Thonny.

Реалізація.

import random

print("Трикутник з випадковими координатами")

def rand_vector(n):

    r=['None']*n

    for i in range(0,n):

        r[i]=random.randint(-200,200)

    return r

def norma_vector(a,b):

    s=((a[0]-b[0])**2+(a[1]-b[1])**2)**0.5

    return s

q=rand_vector(2); p=rand_vector(2); g=rand_vector(2);

QG=norma_vector(g,q); QP=norma_vector(p,q); GP=norma_vector(p,g);

p1=(QG+QP+GP)/2; Plosha=(p1*(p1-QG)*(p1-QP)*(p1-GP))**0.5

H=['None']*3; H[1]=QG; H[2]=QP; H[0]=GP;

print("Координати точки Q:",q)

print("Координати точки P:",p)

print("Координати точки G:",g)

print("Довжина сторони QG: ",QG);

print("Довжина сторони QP:", QP);

print("Довжина сторони GP: ",GP);

print("Список довжин сторін:",H);

a=max(H); b=min(H); c=QG+QP+GP-a-b

if b+c>a:

    print("На цих точках існує трикутник")

else:

    print("На цих точках не утвориться трикутник")

if (b**2+c**2>a**2)and(b+c>a):

    print("На цих точках існує гострокутний трикутник ")

if (b**2+c**2==a**2)and(b+c>a):

    print("На цих точках існує прямокутний трикутник")

if (b**2+c**2<a**2)and(b+c>a):

     print("На цих точках існує тупокутний трикутник")

print("Площа трикутника дорівнює:", Plosha)

print("Периметр трикутника дорівнює:", 2*p1)

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

Трикутник QPG з випадковими координатами

Координати точки Q: [-60, -120]

Координати точки P: [-81, -73]

Координати точки G: [66, 85]

Довжина сторони QG:  240.62626623043462

Довжина сторони QP: 51.478150704935004

Довжина сторони GP:  215.8077848456816

Список довжин сторін: [215.8077848456816, 240.62626623043462, 51.478150704935004]

На цих точках існує трикутник

На цих точках існує тупокутний трикутник

Площа трикутника дорівнює: 5113.4999999999945

Периметр трикутника дорівнює: 507.9122017810512

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

середа, 17 лютого 2021 р.

Операції над множинами в Пітоні

 

Операції над множинами в Пітоні

 

Eлементи множини повинні бути:

 незмінними і хешованими.

Елементами множини типу set можуть бути  такі об’єкти:

·      Цілі числа(int)вигляду:{ -29, -2, -1, 0, 1, 2, 100034};

·      Числа з плаваючою крапкою(float) вигляду:{-3.56; 4.62};

·      Рядки(str) вигляду: {'D', 'DD1', 'DDD2', 'DDD3'};

·      Кортежі(записи) вигляду: {-3.02, True,  False,  0.5, "Gnat"}

 

Елементами множини типу set не можуть бути  такі об’єкти:

·      Списки(list) вигляду: [True, False, False, True, False,True]

·      Словники(dict) вигляду: dict(червоне="рух заборонено", жовте="увага", зелене="рух дозволено");

·      Множини(set)  вигляду: {-3, -2,  "Arsen",  "Artem",  0, True};

 

Множина є  неупорядкованою сукупністю об’єктів,

в якій не може бути дублікатів.

 

Приклади кодування множини:

Спосіб 1. Список жіночих імен перетворюється в множину:

A1=set(["Agnesa", "Alla",  "Alisa", "Aida"])

print("множина: A1=",A1, type(A1))

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

# множина: A1= {'Alisa', 'Agnesa', 'Aida', 'Alla'} <class 'set'>

 

 

 

 

 

 

 

Спосіб 2. Список чоловічих імен перетворюється в множину:

A2={"Abram", "Adam",  "Anastas", "Adam", "Abram", "Adam"}; 

print("множина: A2=",A2, type(A2))

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

# множина: A2= {'Adam', 'Abram', 'Anastas'} <class 'set'>

 

Спосіб 3. Два списки перетворюються на множини і над ними виконується опереація об’єднання «|» та віднімання «-« :

A3=[True, False];

A4=[1, 2,3,4];

A5=set((set(A3)|set(A4))-{1,2}),

print("множина: A5=", A5, type(A5))

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

# множина: A5= ({False, 3, 4},) <class 'tuple'>

 

Спосіб 4. Множина із логічних типів та рядків символів

A6={True, False, False, "True", 'False', "False", "False"}

print("множина: A6=",A6, type(A6))

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

# множина: A6= {False, True, 'False', 'True'} <class 'set'>

 

Спосіб 5. Множина букв вислову.

A7 = set('Hello, Python!')

print("множина: A7=",A7, type(A7))

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

#множина: A7= {' ', 'P', 'n', 'l', 'o', 't', '!', 'H', 'y', ',', 'h', 'e'} <class 'set'>

 

Спосіб 6. Множина, що  утворена із словника.

A8=set(dict(червоне="рух заборонено", жовте="увага", зелене="рух дозволено"))

print("множина: A8=",A8, type(A8))

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

 

# множина: A8= {'зелене', 'червоне', 'жовте'} <class 'set'>

 

Зразки кодування множин мовою програмування Python3

A={"Agnesa", "Alla",  "Alisa", "Aida"};

A1={"Abram", "Adam",  "Anastas", "Arnold", "Abram", "Adam"}; 

B={-3, -2,  "Arsen",  "Artem",  0, True};

B1={-3.02, True,  False,  0.5, "Gnat"}

C={1, True, 0, False, -1, 'FalseTrue'};

C1={'D', 'D1', 'D2', 'D3', 'D4'}

A3=["Agnesa", "Alla",  "Alisa", "Aida"]

C2=[True, False, False, False]

C3={"True", "False", "False", "False"}

print("список: A3=",A3, type(A3))      # список: A3= ['Agnesa', 'Alla', 'Alisa', 'Aida'] <class 'list'>

print("множина: A1=",A1, type(A1))     # множина: A1= {'Anastas', 'Adam', 'Arnold', 'Abram'} <class 'set'>

print("cписок: C2=",C2, type(C2))  # cписок: C2= [True, False, False, False] <class 'list'>

print("множина: C3=",C3, type(C3))    # множина: C3= {'True', 'False'} <class 'set'>

Щоб створити множину, слід використовувати функцію set()

або розмістити у фігурних дужках

одне або кілька значень, розділених комами.

 

 

Мова програмування Python має засоби для роботи з множинами.

У Python множина – це невпорядкована колекція елементів, яка має наступні особливості:

·       усі елементи множини є унікальні. Іншими словами, у множині не може бути двох однакових елементів;

·       елементи множини є незмінюваними об’єктами;

·       елементи множини можуть бути різних типів.

У Python множина представлена окремим типом даних. Множини підтримують операції, що існують в теорії множин з курсу математики. Множина може бути пустою (не містити елементів).

Приклади множини  в Python3.

# множина, яка містить три елементи: 'a', 5, 'textbook'

R={'a', 5, "textbook"}

 

# множина, яка містить цілі числа від 0 до 5

T={0,1,2,3,4,5}

 

# пуста множина

P={ }

Створення об’єкту типу “множина”. Функція set(). Приклади

·          

Щоб створити об’єкт типу “множина”

можна використати один з наступних  способів:

1.   з допомогою присвоєння цьому об’єкту

множини елементів фігурних дужках { };

2.   з допомогою присвоєння об’єкту деякого

результату, що був повернутий функцією set().

               Функція set() дозволяє перетворити

    в множину об’єкти інших типів;

3.   з допомогою присвоєння об’єкту

результату функції frozenset().

Функція frozenset() є конструктором

класу frozenset. Ця функція дозволяє

отримати незмінну (immutable) множину;

4.   з допомогою присвоєння об’єкту

результату деякої операції над множинами

(наприклад, операції & перетину множин);

5.   з допомогою присвоєння об’єкту

результату функції, яка повертає

деяку множину.

 

Приклад.

# Множини

Створення об'єкту типу "множина"

 

# 1. З допомогою фігурних дужок { }

x = { 0, 0, 1, 2, 3 }

Виведення:  # x = {0, 1, 2, 3} - елементи в множині не повторюються

y = { 'a', "textbook", 5 }

Виведення:   # y = {'a', 'textbook', 5}

z = { True, False, 0.25, 'Hello' }

Виведення:   # z = {False, True, 'Hello', 0.25}

 

Створення об'єкту типу "множина"

 

# 2. З допомогою функції set

x = set(['a', 5, "textbook", 5])    

Виведення:  # x = {5, 'textbook', 'a'}

y = set('Hello!')        

Виведення:   # y = {'l', 'o', 'e', '!', 'H'}

z = set([0,1,2,3,4,5])     

Виведення:  # z = {0, 1, 2, 3, 4, 5}

 

Створення об'єкту типу "множина"

 

 

# 3. З допомогою деякої операції

x = { 1, 2, 3, 4 } & { 3, 2}     

Виведення:  # x = {2, 3}перетин множин

y = { 1, 2, 3, 4 } - { 1, 4}     

Виведення:   # y = {2, 3}різниця множин

z = { 'a', 'c', 5 } | { True }     

Виведення:   # z = {'a', 5, 'c', True}сума множин

Створення об'єкту типу "множина"

 

# 4. З допомогою функції frozenset

x = frozenset([1, 2, 3, 4])  

Виведення:  # frozenset({1, 2, 3, 4}) <class 'frozenset'>

 

# 5. З допомогою функції, яка повертає множину

x = { 1, 2, 3, 4 }

y = { 3, 5, 7 }

z = x.union(y)  

 Виведення:      # z = { 1, 2, 3, 4, 5, 7 }обєднання множин

 

 

Множини чисел в Python3:

A={24, 17,  59, 87};       A1={2.4, 1.77,  5.99,  8.4567}; 

B={-3, -2,  -1,  0};           B1={-3.02, -2.008,  -1.0005,  0.5}

C={-5, 5, -9, 8, 7};          C1={-5.45, 5.82, -9.59, 8.54, 7.777}

Множини рядків символів в Python3:

A={"Agnesa", "Alla",  "Alisa", "Aida"};     

A1={"Abram", "Adam",  "Anastas", "Arnold"}; 

Множини  чисел і символів в Python3:

B={-3, -2,  "Arsen",  "Artem",  0, True};          

B1={-3.02, True,  False,  0.5, "Gnat"}

C={1, True, 0, False, -1, 'FalseTrue'};         

C1={'D', 'D1', 'D2', 'D3', 'D4'}

 

 

 

 

Базові операції над множинами.

Мова Python підтримує наступні операції над множинами:

in – перевірка елементу на входження в множину;

 (мінус) – різниця множин: (A in set(B)=True);

| об’єднання множин(cума множин, C=A|B);

& – перетин множин(переріз множин C=A&B);

^ – симетрична різниця(C=AÈB-AÇB= A|B- A&B).

 

 

Операція |. Об’єднання множин.

Об’єднання множин a та b – це утворення такої множини c, елементи якої є в множині a або є в множині b.

У мові Python для реалізації об’єднання множин можна використати операцію | або функцію union(). 

Приклад кодування: C=A.union(B).  Або   C=A|B

 

Операція &. Перетин множин.

Перетин двох множин ab – це множина c, що містить спільні елементи множин ab. Кожен елемент множини c розміщується у множині a а також у множині b.

У мові Python для реалізації перетину множин використовується операція & або функція intersection().

Приклад кодування: C=A.intersection(B).  Або   C=A&B

 

Операція -. Різниця множин.

В Python операція різниця множин позначається символом  (мінус). Крім того для визначення різниці множин у Python реалізовано функцію difference().

Приклад кодування: C=A.difference(B).  Або   C=A-B

 

Операції innot in. Перевірка елементу на входження.

Операція in використовується у випадках, коли потрібно визначити чи входить елемент у множину.

Приклад кодування:  x in A.     Або   x not in B

 

Операція ^. Симетрична різниця множин.

В Python операція cиметрична різниця множин позначається символом ^ (Power). Крім того для визначення симетричної різниці множин у Python реалізовано функцію symmetric_difference().

Приклад кодування: C=A. symmetric_difference(B). Або   C=A^B