Урок №4 для 2 класу. НУШ. Читання за О.Савченко - Наш клас – одна міцна сім’я...VsimPPT
Завантаження доступне на https://vsimpptx.com
-------
Урок №4 для 2 класу. НУШ. Читання за О.Савченко - Наш клас – одна міцна сім’я. Нузет Умеров. Наш клас. Марія Хоросницька. Добра порада. Тетяна Цидзіна. Очі, віха маю… Прислів’я
Урок №4 для 2 класу. НУШ. Читання за О.Савченко - Наш клас – одна міцна сім’я...VsimPPT
Завантаження доступне на https://vsimpptx.com
-------
Урок №4 для 2 класу. НУШ. Читання за О.Савченко - Наш клас – одна міцна сім’я. Нузет Умеров. Наш клас. Марія Хоросницька. Добра порада. Тетяна Цидзіна. Очі, віха маю… Прислів’я
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...tetiana1958
29 травня 2024 року на кафедрі зоології, ентомології, фітопатології, інтегрованого захисту і карантину рослин ім. Б.М. Литвинова факультету агрономії та захисту рослин Державного біотехнологічного університету було проведено відкриту лекцію на тему «Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випробувань пестицидів: шлях до підвищення якості та надійності досліджень» від кандидата біологічних наук, виконавчого директора ГК Bionorma, директора Інституту агробіології Ірини Бровко.
Участь у заході взяли понад 70 студентів та аспірантів спеціальностей 202, 201 та 203, а також викладачі факультету та фахівці із виробництва. Тема лекції є надзвичайно актуальною для сільського господарства України і викликала жваве обговорення слухачів та багато запитань до лектора.
Дякуємо пані Ірині за приділений час, надзвичайно цікавий матеріал та особистий внесок у побудову сучасного захисту рослин у нашій країні!
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жаріковаestet13
До вашої уваги історія про українську поетку, бойову медикиню, музикантку – Єлизавету Жарікову, яка з початку повномасштабної війни росії проти України приєдналася до лав ЗСУ.
Регіональний центр євроатлантичної інтеграції України, що діє при відділі документів із гуманітарних, технічних та природничих наук, підготував віртуальну виставку «Допомога НАТО Україні».
3. Рядки
Як ви вже знаєте, у багатьох створених програмах
ми використовували рядки. Давайте докладніше
з’ясуємо, що ж це таке насправді!
Мова Python вважає рядком все, що знаходиться
всередині лапок. Наприклад, якщо помістити цей текст
в лапки, він також стане рядком для Python (рис. 1).
З точки зору комп’ютера, весь текст – це набір сим-
волів. У кожного символа є свої код. Різний код та у
різних за регістром символів, це потрібно враховува-
ти, коли ви заходите на сайти. Наприклад, логін Alex і
alex належатимуть абсолютно різним користувачам. Все
тому, що велика буква представлена одним кодом, а ма-
ленька – зовсім іншим, тому комп’ютер сприймає їх як
два різні символи.
Рисунок 1
3
Рядки і символи
4. Якщо говорити про рядки, то це – послідовність різ-
них символів.
Для написання деяких програм просто необхідно
вміти працювати з рядками. Давайте ще раз подивимося
на приклад рядків з попереднього уроку:
s = "Guess my number"
print(s)
Іноді потрібно розбити один рядок на кілька, напри-
клад, коли потрібно помістити багато тексту всередині
лапок. Такий запис ніяк не вплине на результат роботи
функції print(), але дозволить більш компактно роз-
містити код. Спершу поставимо символ , а потім вже
виконаємо перенесення тексту:
s = "Hello! This is my new game
Guess my number"
print(s) # Hello! This is my new game Guess my
number
Робота з рядками
Як ви пам’ятаєте, якщо потрібно виконати перене-
сення рядка, ми використовуємо строковий літерал n.
Щоб додати табуляцію перед текстом, слід додати літе-
рал t:
print("Start:ntstringntstringntstringnEnd")
4
Урок № 7
5. Конкатенація (додавання) застосовується для з’єд-
нання двох рядків і реалізується за допомогою знаку +:
s1 = "Hello"
s2 = "World"
print(s1 + s2) # HelloWorld
Дублювання рядка може знадобитися, коли потріб-
но продублювати будь-який текст або набір символів
певну кількість разів:
s1 = "Hello"
print(s1 * 3) # HelloHelloHello
Довжина рядка визначається за допомогою функції
len(). Ця функція може знадобитися у найрізноманіт-
ніших завданнях. Припустимо, ми пропонуємо корис-
тувачеві ввести код з шести символів, а потім перевіря-
ємо, чи увів він достатню кількість символів. Приклад
запису такої функції виглядає наступним чином:
s1 = "Hello"
print(len(s1)) # 5
Індексація рядків
Оскільки рядки – це набір символів, то з будь-якого
рядка можна отримати конкретний символ. Для цього
потрібно лише знати його індекс (порядковий номер).
Важливо пам’ятати, що індекс першого елемента завжди
дорівнює нулю.
5
Рядки і символи
6. Давайте розглянемо приклад використання індек-
сів:
s = "Hello World"
print("symbol [0]: " + str(s[0])) # H
print("symbol [6]: " + str(s[6])) # W
В даному прикладі створюється рядок s, а потім
виводяться символи з індексами s[0] і [6]. Майте на
увазі, що функція len() поверне кількість символів в
рядку, але індекс останнього елемента буде на одиницю
меншим. Для даного рядка допустимі індекси від 0 до 10,
більше значення викличе помилку. Наприклад, s[11]
виконається з помилкою:
s = "Hello World"
i = len(s) # i = 11
print(s[i]) # s[11] = Error
В результаті в консоль буде виведено повідомлення
типу IndexError: string index out of range. Через
цю особливість, будьте більш уважні під час звертання
до елементів рядка за індексом.
6
Урок № 7
7. Методи рядків
Часто з рядками потрібно виконувати різні шаблон-
ні дії (заміну букв, пошук і т. п.). Саме для таких завдань
у багатьох мовах програмування є заготовлений набір
методів.
Метод – це функція, яка застосовується до об’єкта, в
даному випадку – до рядка. У мові Python достатньо ба-
гато різних методів і запам’ятати призначення кожного з
них буде непростим завданням. У зв’язку з цим, завжди
звертайтеся до документації (https://docs.python.org/3.6/
library/stdtypes.html#string-methods).
Розглянемо деякі методи на прикладі їхньої роботи
в коді.
Синтаксис методу:
імя_об›екта.імя_метода (параметри)
Уявіть, ми виявили, що символи представлені в різ-
них регістрах, що робить нашу програму особливо не-
привабливою. Чи не шукати ж нам усі рядки в коді і ко-
ригувати кожен з них! Для цього використовуємо один з
наведених нижче методів:
s = "guEss mY numBer"
s.capitalize() # Guess my number
s.title() # Guess My Number
s.upper() # GUESS MY NUMBER
s.lower() # guess my number
7
Рядки і символи
8. Метод find і rfind
Одне з основних завдань при роботі з рядками – по-
шук ключових слів.
Метод find застосовується до рядка і виконує пошук
підрядка, який передається як параметр, тобто в дужках
find(""). В результаті функція повертає індекс першого
входження шуканого підрядка. Якщо ж такий підрядок
не знайдено, метод повертає значення, яке дорівнює -1.
Не лякайтеся, якщо таке формулювання здалося вам
складним. З’ясуємо принцип використання find на при-
кладі, і ви відразу зрозумієте що до чого:
s = "message"
s.find("m")) # 0
s.find("s") # 2
s.find("w") # -1
Метод rfind працює за тим же принципом, тільки
повертає індекс останнього входження підрядка, тобто
виконує пошук справа наліво:
s = "message"
s.rfind("m") # 0
s.rfind("s") # 3
s.rfind("w") # -1
Різницю в роботі цих методів можна побачити, по-
глянувши на третій рядок, де виконується пошук сим-
вола s. У першому випадку було знайдено перше вхо-
дження цього символу з індексом 2, а в другому випадку
символ s був знайдений в позиції 3.
8
Урок № 7
9. 9
Рядки і символи
Метод replace
Метод replace(old, new) повертає рядок, в яко-
му будуть замінені всі входження old на підрядок new.
Метод може приймати два параметри replace(old,
new) або три replace(old, new, num). Як ви вже мог-
ли здогадатися, old – це текст, який будемо замінювати,
new – текст, на який будемо замінювати, num – кількість
зроблених замін.
s = "best regards best"
s.replace("best", "kind") # kind regards kind
s.replace("best", "kind", 1) # kind regards best
Метод count
Порахувати кількість входжень підрядка в рядок до-
поможе метод count:
s = "Hello World"
s.count("l")) # 3
Методи рядків
Перейдемо до вивчення методів, які дозволять пере-
вірити рядок за різними критеріями. Це може бути пе-
ревірка на наявність букв, цифр і навіть регістрів. Роз-
беремося докладніше, як це працює.
■■ Метод isnumeric() перевіряє, чи є в рядку цифри.
Якщо цифра є, поверне true, якщо ні – false.
10. 10
Урок № 7
■■ Метод isupper() дозволяє дізнатися, чи є в рядку
літери у верхньому регістрі. Як ви вже могли здога-
датися, повернеться true, якщо такі будуть знайдені.
■■ Метод islower(), в свою чергу, використовується для
нижнього регістра. Працює за аналогією з описом
вище, повертає true або false.
■■ Метод isalpha() поверне true, якщо всі символи в
рядку будуть буквами.
Приклад використання методів:
password = "qw@E1r"
print("nTry isalpha: ")
for symbol in password:
alpha = symbol.isalpha()
print(f"{symbol} - {alpha}")
if (not alpha) and (symbol == "@"):
print(f"It is {symbol}")
Результат виконання коду буде наступний:
Try isalpha:
q - True
w - True
@ - False
It is @
E - True
1 - False
r - True
11. Рисунок 2
11
Рядки і символи
Зрізи рядків
Зріз (slice) – це витяг з рядка одного символа або су-
купності. Можна провести аналогію з відсіканням пев-
ної частини тексту.
Оператор вилучення зрізу має вигляд [I:j], де
i – початок зрізу, а j – кінець. Цікаво те, що символ з
індексом j у зріз не входить. Можна також задати крок
[I:j:step] зрізу. За замовчуванням перший сим-
вол – це початок рядка, відповідно, він дорівнює 0, а
другий дорівнює довжині рядка (рис. 2).
s = "message"
print(s[0:]) # message
print(s[2:5]) # ssa
print(s[2:-1]) # ssag
print(s[1:6:2]) # esg
print(s[:5]) # messa
print(s[:]) # message
12. Рисунок 3
12
Урок № 7
Напишемо програму для створення надійного паро-
ля.
Здавалося б, немає нічого простішого, ніж створен-
ня надійного пароля. Однак часто користувачі банально
не хочуть придумувати складний пароль, використову-
ють один і той же ключ для різних сервісів або вводять
прості стандартні слова, піддаючи ризику свій обліко-
вий запис (рис. 3).
Для багатьох не буде секретом, що оптимальна дов-
жина пароля повинна бути близько 15-ти символів, а
складатися він повинен з малих, великих літер і симво-
лів. Також пароль не повинен містити популярних ком-
бінацій, наприклад: admin, qwerty, 12345, password і т. д.
До того ж використання одного пароля, навіть якщо він
надійний, є поганою практикою.
Існує ряд ресурсів, за допомогою яких можна при-
близно розрахувати, за який час може бути зламаний
пароль, наприклад How Secure Is My Password? (https://
howsecureismypassword.net).
13. Рисунок 4-5
13
Рядки і символи
Давайте за допомогою даного сервісу протестуємо
різні комбінації символів: qwerty і q1W2e#R4t%y^. Як
видно на зображеннях, другий пароль виявився більш
складний і надійний (рис. 4-5).
Варто зауважити, що вводити справжні паролі в по-
дібні форми не рекомендується. Сервіс наведено лише
для ознайомлення і створення загального розуміння
того, яка комбінація символів вважається особливо на-
дійною.
14. 14
Урок № 7
Напишемо програму, яка буде генерувати складні
паролі:
Лістинг 1
import random
s1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
s2 = "0123456789"
s3 = "~!@#$%^&*()_+{}[]:/"
s = s1.upper() + s1.lower() + s2 + s3
password = ""
for i in range(15):
p = random.choice(s)
password = password + p
print(f"New password [{i}]: {password}")
Давайте з’ясуємо, що відбувається в програмі. Спер-
шу імпортували модуль import random.
Потім створили три змінні s1, s2, s3, в які записа-
ли всі можливі символи, які будуть використовуватися
в процесі генерації пароля:
s1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
s2 = "0123456789"
s3 = "~!@#$%^&*()_+{}[]:/"
Потім нам потрібно буде отримати абсолютно ви-
падкове значення – чи то цифру, букву або символ.
15. 15
Рядки і символи
Для цього створюємо змінну s і, немов у коробку,
складаємо в неї всі рядки. Таким чином, отримаємо на-
ступний запис:
s = s1.upper() + s1.lower() + s2 + s3
# s = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm
nopqrstuvwxyz0123456789~!@#$%^&*()_+{}[]:/
Чудово! У нас є рядок.Тепер саме час згенерувати
пароль. У циклі for з рядка s з кожним проходом отри-
муємо випадкове значення random.choice(s). Потім
додаємо це значення до змінної password.
За допомогою послідовного виведення рядків ми
можемо відобразити результат в консоль:
for i in range(15):
p = random.choice(s)
print(p, end="")
В результаті роботи програми сформується пароль з
випадкових букв, цифр і символів:
New password [14]: qH3/0)D8_vpATV7
New password [14]: L)l@+Wd*JXsJZ)8
New password [14]: y7nT:k*&K@RgO$k
Тепер ви можете генерувати надійні паролі для своїх
облікових записів за допомогою створеної програми.
16. 16
Урок № 7
Ознайомлення з модулем string
У мові Python є модуль import string, який може
значно полегшити генерацію пароля, дозволяючи отри-
мати все той же набір букв і символів, не прописуючи їх
вручну.
Повернемося до Лістингу 1 і зосередимо увагу на та-
кому запису:
s1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
s2 = "0123456789"
s3 = "~!@#$%^&*()_+{}[]:/"
s = s1.upper() + s1.lower() + s2 + s3
Замість нього можна використовувати константи з
модуля string:
# string.ascii_lowercase + string.ascii_uppercase
s1 = string.ascii_letters
s2 = string.digits
s3 = string.punctuation
s = s1 + s2 + s3
Таким чином, результат при використанні модуля
string жодним чином не відрізнятиметься від резуль-
тату, отриманого в Лістингу 1. Відповідно, у своїх про-
грамах ви можете використовувати будь-який зручний
для вас варіант.