Дистанційна освіта з інформатики в період лютого 2021 року
22.02.2021 - 28.02.2021
Тема: Створення
та реалізація текстових типів даних та
списків( зокрема, лінійних масивів із різних типів даних, а також рядків із чисел, рядків із символів) на Python3
в
середовищі опису та виконання алгоритмів Thonny.
Теоретична частина.
Зразки алгоритмів: https://pythontask.pp.ua/
Задача 1. Дано півсклянки води і півсклянки
молока. Три ложки води долили до молока, а потім три ложки суміші знову перелили
в склянку з водою. Чого виявилось більше ( у грамах) внаслідок цих переливань: суміші:
води в молоці чи суміші: молока у воді?
Розв’язання: Порівну,
бо скільки відлили молока, стільки ж долили води.
Задача 2. Три подруги одягли сукні різних
кольорів. Одна − блакитну, друга − білу, і третя − зелену. Їхнє взуття було не таких
самих кольорів, як сукні; тільки в Олі колір взуття був однаковий. Наталка була в зелених босоніжках.
Сукня і взуття Валі не були білими. Хто і як був одягнений?
Розв’язання: Зрозуміло,
що колір Валиного взуття блакитний. Отже, Оля була у білій сукні і білих босоніжках.
Наталка одягла блакитну сукню, а Валя – зелену.
Задача 3. Скільки існує двоцифрових натуральних чисел, обидві цифри яких розташовані
у зростаючому порядку?
Розв’язання: У другому десятку їх 8,
у третьому десятку – 7, у четвертому десятку
- 6, і так далі. 8+7+.....+ 2+1=36 двоцифрових чисел?
Задача 4. Довести, що серед 5 осіб принаймні
двоє з них мають однакову кількість знайомих.
Розв’язання: Помістимо 5 осіб у „клітки”
з номерами 0,1,2,3,4, де номер „клітки” відповідає кількості знайомих особи. Зауважимо,
клітки з номерами 0 та 4 не можуть бути заповнені
одночасно, бо якщо є особа, що не знайома ні з ким, тоді клітка під номером 4 порожня.
Отже 5 осіб розміщені в чотирьох клітках. Принаймні дві особи знаходяться в одній
клітці., тобто мають однакову кількість знайомих.
Задача 5. Для п’яти дипломатів є ключі в одній зв’язці. Скільки необхідно зробити
спроб, щоб відімкнути три дипломати?
Розв’язання: Перенумеруємо
усі дипломати. Першим із ключів в найгіршому випадку треба зробити 4 спроби. Якщо ключ не підійшов до 4 дипломатів, то цей ключ обов’язково відімкне п’ятий
дипломат. Залишається 4 ключі та 4 дипломати. Другий ключ знайде свій дипломат у
найгіршому випадку за 3 спроби, тоді третій ключ у найгіршому випадку відімкне за три спроби третій дипломат. Отже, щоб відімкнути
три дипломати, потрібно 5+4+3=12 спроб.
Задача 6. Двоє
по черзі розламують шоколадку 6x8. За один
хід дозволяється зробити прямолінійний розлом будь-якої частини вздовж заглиблення.
Програє той, хто не зможе зробити хід.
Розв’язання: Головне
міркування: після кожного ходу кількість частинок збільшується рівно на 1. Спочатку був один шматок. В кінці гри, коли не можна зробити жоден хід,
шоколадка розламана на маленькі частинки. А їх-48. Таким чином, гра буде тривати
рівно 47 ходів, Останній, 47-й хід (також, як і всі інші ходи з непарними номерами),
зробить перший гравець. Тому він в цій грі перемагає, причому незалежно від того,
як він буде грати.
Задача
8. Є
дві купи каменів по 7 в кожній. За хід дозволяється взяти
будь-яку кількість каменів, але тільки із
однієї купи. Програє той, кому нема що брати.
Розв
'язування. В
цій грі другий гравець перемагає за допомогою
симетричної
стратегії: кожним своїм ходом він повинен брати
стільки ж каменів, скільки попереднім ходом
взяв перший гравець,
але
з іншої купи. Таким чином, у другого гравця завжди є хід.
Симетрія
в цій задачі грунтується на рівності числа каменів в купах.
Задача
9. Є
дві купки камінців: в одній -30, в
другій - 20. За хід
дозволяється
брати будь-яку кількість камінців, але тільки з одної купки.
Програє
той, кому нема що брати.
Розв
'язування. Виграє
перший. Першим ходом він зрівнює кількість
камшців
в купках, після чого грає і перемагає за
допомогою
симетричної
стратегії: кожним своїм ходом він повинен брати
стільки ж каменів, скільки попереднім ходом
взяв другий гравець,
але
з іншої купи.
Практична частина.
Для користувачів OS Windows, бажано встановити Середовище Thonny, оскільки робота в ньому непогано описана в нашому підручнику.
Середовище Thonny Python IDE for beginners https://thonny.org/
Для завантаження можна прямо перейти за посиланням
Для Windows: https://github.com/thonny/thonny/releases/download/v3.3.2/thonny-3.3.2.exe
Завдання
0. Створити
алгоритм на Python3 для утворення списку із випадкових чисел. Потім
знайти суму усіх чисел, що є у створеному списку,
та добуток усіх чисел, що є у створеному списку. Виконайте
реалізацію цієї програми в середовищі для програмування Thonny/
Реалізація
import random
print("Списки з випадковими числами")
print("*Початок допоміжної процедури створення списків**")
def rand_vector(n):
r=['None']*n
for i in range(0,n):
r[i]=random.randint(-25,25)
return r
print("***Кінець процедури створення списків*****")
print("*Початок допоміжної процедури
множення списків*")
def mult(a):
lst =a
val = 1
for i in range(0,len(lst)):
val=(val*lst[i])
return val
print("***Кінець процедури множення списків*****")
print("***Початок алгоритму*****")
k=rand_vector(8)
# cтворення списку k із випадкових чисел
m=sum(k); n=mult(k) # знаходження
суми та добутку чисел в списку 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)
Завдання
1. Створити алгоритм
мовою програмування Python3 з діями над списками в середовищі
програмування Thonny. І протестуй цю програму три рази, змінивши елементи.
Реалізація.
В
алгоритмі використовується тип даних: списки
print('**ОПЕРАЦії
НАД СПИСКАМИ, що містять різні числа
і текстові рядки”)
lst1=[1,2,3,'analysis','synthesis','studying','research']
print('Вивеведеня
на екран списку lst1=',lst1, type(lst1))
lst1[0]='-1'; lst1[1]='-n'; lst1[2]='-3n'; lst1[3]='--65n';
print('Вивеведеня
на екран зміненого списку lst1=',lst1, type(lst1))
print('Пошук
найбільшого елемента: max(lst1)=', max(lst1))
print(' Пошук
найменшого елемента: min(lst1)=',min(lst1))
print('**ОПЕРАЦії
НАД СПИСКАМИ, що містять лише числа**')
lst2=[-4.7, -5.8,
6.3,0.5, -9,87];
lst6=sorted(lst2)
print('lst2=',lst2); print('Відсортований список: lst2=',sorted(lst6))
lst2[0]=abs(int(-20.05 - lst2[1]+2* lst2[2]))
lst2[1]=abs(int(-18.35- lst2[0] +3* lst2[1]))
lst2[2]=abs(int(-10.55+ lst2[2]+4* lst2[0]))
MIN=min(lst2); MAX=max(lst2); middle=(MAX+MIN)/2
SEREDNIJ=MIN+MAX
print('lst2=',lst2)
print('min(lst2)=', MIN)
print('max(lst2)=', MAX)
print('middle(lst2)=',middle)
print('**ОПЕРАЦії
НАД СПИСКАМИ, що містять рядки**')
lst3=['a','b','c','d','e','f']
print('lst3=', lst3)
for i in range(len(lst3)):
lst3[i]=i*('1+5h-')+'A'
print('lst3[i]=',lst3[i])
print('lst3=',lst3)
print('min(lst3)=',min(lst3))
print('max(lst3)=',max(lst3))
Завдання
2. Створити алгоритм
з відношеннями над множинами чисел в в середовищі
програмування Thonny. І протестуй цю програму три рази, змінивши елементи.
Реалізація.
В
алгоритмі використовується тип даних: множини чисел
import random
M1=['Бандеролька','парасолька','монополька','бараболька']
K=['None']*4
N=['None']*4
for i in range(len(M1)):
N[i]=random.choice(M1)
K[i]=random.choice(M1)
print("N[",i, "]=",
N[i])
print("K[",i, "]=",
K[i])
print("Виконання операцій
зі списками")
N[i]=i*('(1+Z)')+('+...+ZN')
K[i] =i*('(1+Y)')+('+...+YN')
print("N[",i, "]=",
N[i])
print("K[",i, "]=",
K[i])
print ('M1=',M1)
print ('N=',N)
print ('K=',K)
print("Виконання операцій з випадковими числами")
K11=random.randint(-100,100)
P=random.gauss(-20,100)
print ('Випадкове ціле число: K11=',K11,' Випадкове дробове число:P=',P)
print ('Результат дій над двома числами: K11 та Р =',K11%2-P*random.randint(10,100))
print ('Результат дій над двома числами:
K11та Р=',(2**K11)%10+(P/4)*K11+random.randint(100,1000))
Завдання
3. Створити алгоритм
пошуку непарних
двохцифрових чисел, які діляться націло на 3 в середовищі програмування Thonny. І протестуй цю програму три рази, змінивши елементи.
Реалізація.
В
алгоритмі використовується тип даних: множини чисел
n=100
A={s for s in range(10, n)}
print("Множина A=",A, type(A))
B={s for s in A if s%2==1}
print("Множина парних чисел B=",B, type(B))
C1={s for s in A if s%3=0}
print("Множина чисел, що кратні 3, C1=",C1, type(C1))
C2= {s for s in A if s%7!=0}
print("Множина чисел, що не кратні 7, C2=",C2, type(C2))
D1=C1|C2
print("Множина D1=C1|C2",D1, type(D1))
D2=C1&C2
print("Множина D2=C1&C2",D2, type(D2))
Результат виконаної практичної роботи це чотири файли( із кодами алгоритму та результатами виконання алгоритму) надіслати вашому учителю на електронну скриньку:
vinnser@gmail.com (Сергій Петрович)
Немає коментарів:
Дописати коментар