SlideShare a Scribd company logo
Урок № 7
Рядки і
символи
ЗМІСТ
Рядки. .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 3
Робота з рядками.  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 4
Індексація рядків. .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 5
Методи рядків. .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 7
Метод find і rfind .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 8
Метод replace. .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 9
Метод count.  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 9
Методи рядків. .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 9
Зрізи рядків.  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 11
Ознайомлення з модулем string.  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 16
Рядки
Як ви вже знаєте, у багатьох створених програмах
ми використовували рядки. Давайте докладніше
з’ясуємо, що ж це таке насправді!
Мова Python вважає рядком все, що знаходиться
всередині лапок. Наприклад, якщо помістити цей текст
в лапки, він також стане рядком для Python (рис. 1).
З точки зору комп’ютера, весь текст – це набір сим-
волів. У кожного символа є свої код. Різний код та у
різних за регістром символів, це потрібно враховува-
ти, коли ви заходите на сайти. Наприклад, логін Alex і
alex належатимуть абсолютно різним користувачам. Все
тому, що велика буква представлена одним кодом, а ма-
ленька – зовсім іншим, тому комп’ютер сприймає їх як
два різні символи.
Рисунок 1
3
Рядки і символи
Якщо говорити про рядки, то це – послідовність різ-
них символів.
Для написання деяких програм просто необхідно
вміти працювати з рядками. Давайте ще раз подивимося
на приклад рядків з попереднього уроку:
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
Конкатенація (додавання) застосовується для з’єд-
нання двох рядків і реалізується за допомогою знаку +:
s1 = "Hello"
s2 = "World"
print(s1 + s2) # HelloWorld
Дублювання рядка може знадобитися, коли потріб-
но продублювати будь-який текст або набір символів
певну кількість разів:
s1 = "Hello"
print(s1 * 3) # HelloHelloHello
Довжина рядка визначається за допомогою функції
len(). Ця функція може знадобитися у найрізноманіт-
ніших завданнях. Припустимо, ми пропонуємо корис-
тувачеві ввести код з шести символів, а потім перевіря-
ємо, чи увів він достатню кількість символів. Приклад
запису такої функції виглядає наступним чином:
s1 = "Hello"
print(len(s1)) # 5
Індексація рядків
Оскільки рядки – це набір символів, то з будь-якого
рядка можна отримати конкретний символ. Для цього
потрібно лише знати його індекс (порядковий номер).
Важливо пам’ятати, що індекс першого елемента завжди
дорівнює нулю.
5
Рядки і символи
Давайте розглянемо приклад використання індек-
сів:
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
Методи рядків
Часто з рядками потрібно виконувати різні шаблон-
ні дії (заміну букв, пошук і т. п.). Саме для таких завдань
у багатьох мовах програмування є заготовлений набір
методів.
Метод – це функція, яка застосовується до об’єкта, в
даному випадку – до рядка. У мові 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
Рядки і символи
Метод 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
Рядки і символи
Метод 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
Урок № 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
Рисунок 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
Рисунок 3
12
Урок № 7
Напишемо програму для створення надійного паро-
ля.
Здавалося б, немає нічого простішого, ніж створен-
ня надійного пароля. Однак часто користувачі банально
не хочуть придумувати складний пароль, використову-
ють один і той же ключ для різних сервісів або вводять
прості стандартні слова, піддаючи ризику свій обліко-
вий запис (рис. 3).
Для багатьох не буде секретом, що оптимальна дов-
жина пароля повинна бути близько 15-ти символів, а
складатися він повинен з малих, великих літер і симво-
лів. Також пароль не повинен містити популярних ком-
бінацій, наприклад: admin, qwerty, 12345, password і т. д.
До того ж використання одного пароля, навіть якщо він
надійний, є поганою практикою.
Існує ряд ресурсів, за допомогою яких можна при-
близно розрахувати, за який час може бути зламаний
пароль, наприклад How Secure Is My Password? (https://
howsecureismypassword.net).
Рисунок 4-5
13
Рядки і символи
Давайте за допомогою даного сервісу протестуємо
різні комбінації символів: qwerty і q1W2e#R4t%y^. Як
видно на зображеннях, другий пароль виявився більш
складний і надійний (рис. 4-5).
Варто зауважити, що вводити справжні паролі в по-
дібні форми не рекомендується. Сервіс наведено лише
для ознайомлення і створення загального розуміння
того, яка комбінація символів вважається особливо на-
дійною.
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
Рядки і символи
Для цього створюємо змінну 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
Урок № 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. Відповідно, у своїх про-
грамах ви можете використовувати будь-який зручний
для вас варіант.
Урок № 7
Рядки і символи
© Комп'ютерна Академiя ШАГ
www.itstep.org
Усі права на фото-, аудіо- і відеотвори, що охороняються авторським правом і фраг-
менти яких використані в матеріалі, належать їх законним власникам. Фрагменти
творів використовуються в ілюстративних цілях в обсязі, виправданому поставле-
ним завданням, у рамках учбового процесу і в учбових цілях, відповідно до ст. 1274
ч. 4 ГК РФ і ст. 21 і 23 Закони України «Про авторське право і суміжні права». Обсяг і
спосіб цитованих творів відповідає прийнятим нормам, не завдає збитку нормально-
му використанню об’єктів авторського права і не обмежує законні інтереси автора
і правовласників. Цитовані фрагменти творів на момент використання не можуть
бути замінені альтернативними аналогами, що не охороняються авторським правом,
і відповідають критеріям добросовісного використання і чесного використання.
Усі права захищені. Повне або часткове копіювання матеріалів заборонене.
Узгодження використання творів або їх фрагментів здійснюється з авторами і
правовласниками. Погоджене використання матеріалів можливе тільки якщо
вказано джерело.
Відповідальність за несанкціоноване копіювання і комерційне використання
матеріалів визначається чинним законодавством України.

More Related Content

What's hot

111 контрольні 6 клас
111 контрольні 6 клас111 контрольні 6 клас
111 контрольні 6 класurvlan
 
1000 vprav ta_zavdzn_ukr_mova_4kl
1000 vprav ta_zavdzn_ukr_mova_4kl1000 vprav ta_zavdzn_ukr_mova_4kl
1000 vprav ta_zavdzn_ukr_mova_4kl
Наташа Митрофанова
 
Сборник задач Геометрия 9 класс Мерзляк А.Г.
Сборник задач Геометрия 9 класс Мерзляк А.Г.Сборник задач Геометрия 9 класс Мерзляк А.Г.
Сборник задач Геометрия 9 класс Мерзляк А.Г.
oleg379
 
презентація попередження суїциду
презентація попередження суїцидупрезентація попередження суїциду
презентація попередження суїциду
Jenya Negara
 
Upstream upper inter b2+ (wb key)
Upstream upper inter b2+ (wb key)Upstream upper inter b2+ (wb key)
Upstream upper inter b2+ (wb key)
Mihai Knapp
 
Критерії оцінювання математика
Критерії оцінювання   математикаКритерії оцінювання   математика
Критерії оцінювання математикаyanaanya
 
Destination b1 with answer key MacMillan
Destination b1 with answer key MacMillanDestination b1 with answer key MacMillan
Destination b1 with answer key MacMillan
Carmen Romera
 
Побудова перерізів
Побудова перерізівПобудова перерізів
Побудова перерізів
Nataliya Shulgan
 
кома перед як
кома перед яккома перед як
кома перед як
Тетяна Шинкаренко
 
Розв'язування ірраціональних рівнянь
Розв'язування ірраціональних рівняньРозв'язування ірраціональних рівнянь
Розв'язування ірраціональних рівняньFormula.co.ua
 
teachers book enterprise 4.
teachers book enterprise 4.teachers book enterprise 4.
teachers book enterprise 4.
ivannichovkin
 
Хрестоматія з літературного читання 1-2 класи
Хрестоматія з літературного читання 1-2 класиХрестоматія з літературного читання 1-2 класи
Хрестоматія з літературного читання 1-2 класи
Наталія Трофимчук
 
Урок №4 для 2 класу. НУШ. Читання за О.Савченко - Наш клас – одна міцна сім’я...
Урок №4 для 2 класу. НУШ. Читання за О.Савченко - Наш клас – одна міцна сім’я...Урок №4 для 2 класу. НУШ. Читання за О.Савченко - Наш клас – одна міцна сім’я...
Урок №4 для 2 класу. НУШ. Читання за О.Савченко - Наш клас – одна міцна сім’я...
VsimPPT
 
квадратична функція 8 клас
квадратична функція 8 клас квадратична функція 8 клас
квадратична функція 8 клас
bersenova
 
Збірник завдань для ДПА з математики 9 клас, Мерзляк, Гімназія
Збірник завдань для ДПА з математики 9 клас, Мерзляк, ГімназіяЗбірник завдань для ДПА з математики 9 клас, Мерзляк, Гімназія
Збірник завдань для ДПА з математики 9 клас, Мерзляк, Гімназія
ssuser7aae1a
 
елементи теорії ймовірностей та математичної статистики
елементи теорії ймовірностей та математичної статистикиелементи теорії ймовірностей та математичної статистики
елементи теорії ймовірностей та математичної статистики
Юра Марчук
 
Українська мова. Тестові завдання. 4 клас
Українська мова. Тестові завдання. 4 класУкраїнська мова. Тестові завдання. 4 клас
Українська мова. Тестові завдання. 4 клас
Ковпитська ЗОШ
 

What's hot (20)

111 контрольні 6 клас
111 контрольні 6 клас111 контрольні 6 клас
111 контрольні 6 клас
 
1000 vprav ta_zavdzn_ukr_mova_4kl
1000 vprav ta_zavdzn_ukr_mova_4kl1000 vprav ta_zavdzn_ukr_mova_4kl
1000 vprav ta_zavdzn_ukr_mova_4kl
 
Сборник задач Геометрия 9 класс Мерзляк А.Г.
Сборник задач Геометрия 9 класс Мерзляк А.Г.Сборник задач Геометрия 9 класс Мерзляк А.Г.
Сборник задач Геометрия 9 класс Мерзляк А.Г.
 
презентація попередження суїциду
презентація попередження суїцидупрезентація попередження суїциду
презентація попередження суїциду
 
Upstream upper inter b2+ (wb key)
Upstream upper inter b2+ (wb key)Upstream upper inter b2+ (wb key)
Upstream upper inter b2+ (wb key)
 
Критерії оцінювання математика
Критерії оцінювання   математикаКритерії оцінювання   математика
Критерії оцінювання математика
 
Destination b1 with answer key MacMillan
Destination b1 with answer key MacMillanDestination b1 with answer key MacMillan
Destination b1 with answer key MacMillan
 
Побудова перерізів
Побудова перерізівПобудова перерізів
Побудова перерізів
 
кома перед як
кома перед яккома перед як
кома перед як
 
укр. мова, 3 клас, літо
укр. мова, 3 клас, літоукр. мова, 3 клас, літо
укр. мова, 3 клас, літо
 
Розв'язування ірраціональних рівнянь
Розв'язування ірраціональних рівняньРозв'язування ірраціональних рівнянь
Розв'язування ірраціональних рівнянь
 
teachers book enterprise 4.
teachers book enterprise 4.teachers book enterprise 4.
teachers book enterprise 4.
 
Хрестоматія з літературного читання 1-2 класи
Хрестоматія з літературного читання 1-2 класиХрестоматія з літературного читання 1-2 класи
Хрестоматія з літературного читання 1-2 класи
 
Урок №4 для 2 класу. НУШ. Читання за О.Савченко - Наш клас – одна міцна сім’я...
Урок №4 для 2 класу. НУШ. Читання за О.Савченко - Наш клас – одна міцна сім’я...Урок №4 для 2 класу. НУШ. Читання за О.Савченко - Наш клас – одна міцна сім’я...
Урок №4 для 2 класу. НУШ. Читання за О.Савченко - Наш клас – одна міцна сім’я...
 
дієслово 2 клас
дієслово 2 класдієслово 2 клас
дієслово 2 клас
 
квадратична функція 8 клас
квадратична функція 8 клас квадратична функція 8 клас
квадратична функція 8 клас
 
Збірник завдань для ДПА з математики 9 клас, Мерзляк, Гімназія
Збірник завдань для ДПА з математики 9 клас, Мерзляк, ГімназіяЗбірник завдань для ДПА з математики 9 клас, Мерзляк, Гімназія
Збірник завдань для ДПА з математики 9 клас, Мерзляк, Гімназія
 
елементи теорії ймовірностей та математичної статистики
елементи теорії ймовірностей та математичної статистикиелементи теорії ймовірностей та математичної статистики
елементи теорії ймовірностей та математичної статистики
 
Критерії оцінювання презентації.
Критерії оцінювання презентації.Критерії оцінювання презентації.
Критерії оцінювання презентації.
 
Українська мова. Тестові завдання. 4 клас
Українська мова. Тестові завдання. 4 класУкраїнська мова. Тестові завдання. 4 клас
Українська мова. Тестові завдання. 4 клас
 

Similar to Mka python jr-urok_07_ua_1563258932

Mka python jr-urok_04_ua_1563258855
Mka python jr-urok_04_ua_1563258855Mka python jr-urok_04_ua_1563258855
Mka python jr-urok_04_ua_1563258855
PavloTsiura
 
Mka python jr-urok_03_ua_1563258828
Mka python jr-urok_03_ua_1563258828Mka python jr-urok_03_ua_1563258828
Mka python jr-urok_03_ua_1563258828
PavloTsiura
 
9 klas algebra_tarasenkova_2017
9 klas algebra_tarasenkova_20179 klas algebra_tarasenkova_2017
9 klas algebra_tarasenkova_2017
moyashkolamoyashkola
 
9
99
Algebra 9-klas-tarasenkova-2017
Algebra 9-klas-tarasenkova-2017Algebra 9-klas-tarasenkova-2017
Algebra 9-klas-tarasenkova-2017
kreidaros1
 
7
77
Підручник Математика 4 клас С. П. Логачевська, Т. А. Логачевська (2021 рік) Ч...
Підручник Математика 4 клас С. П. Логачевська, Т. А. Логачевська (2021 рік) Ч...Підручник Математика 4 клас С. П. Логачевська, Т. А. Логачевська (2021 рік) Ч...
Підручник Математика 4 клас С. П. Логачевська, Т. А. Логачевська (2021 рік) Ч...
12Балів ГДЗ
 
Matematyka 4-klas-lohachevska-2021-2
Matematyka 4-klas-lohachevska-2021-2Matematyka 4-klas-lohachevska-2021-2
Matematyka 4-klas-lohachevska-2021-2
kreidaros1
 
інформатика алгор та прогр по підручнику верлань 2 стор на 1 листку
інформатика алгор та прогр по підручнику верлань 2 стор на 1 листкуінформатика алгор та прогр по підручнику верлань 2 стор на 1 листку
інформатика алгор та прогр по підручнику верлань 2 стор на 1 листку
Школа №7 Миргород
 
Учень, як вчений
Учень, як вченийУчень, як вчений
Учень, як вченийCveldulf
 
Mka python jr-urok_05_ua_1563258882
Mka python jr-urok_05_ua_1563258882Mka python jr-urok_05_ua_1563258882
Mka python jr-urok_05_ua_1563258882
PavloTsiura
 
конспект урока з математики для 5а класа
конспект урока з математики для 5а класаконспект урока з математики для 5а класа
конспект урока з математики для 5а класа
VasileUrsaki
 
Урок-гра:Порівняння чисел
Урок-гра:Порівняння чиселУрок-гра:Порівняння чисел
Урок-гра:Порівняння чисел
sveta7940
 
Lecture 07 swift
Lecture 07 swiftLecture 07 swift
Lecture 07 swift
Maksym Davydov
 
Less35
Less35Less35
Less36
Less36Less36
Less37
Less37Less37

Similar to Mka python jr-urok_07_ua_1563258932 (20)

Mka python jr-urok_04_ua_1563258855
Mka python jr-urok_04_ua_1563258855Mka python jr-urok_04_ua_1563258855
Mka python jr-urok_04_ua_1563258855
 
Mka python jr-urok_03_ua_1563258828
Mka python jr-urok_03_ua_1563258828Mka python jr-urok_03_ua_1563258828
Mka python jr-urok_03_ua_1563258828
 
Povtor 7 8kl
Povtor 7 8klPovtor 7 8kl
Povtor 7 8kl
 
9 klas algebra_tarasenkova_2017
9 klas algebra_tarasenkova_20179 klas algebra_tarasenkova_2017
9 klas algebra_tarasenkova_2017
 
9
99
9
 
Algebra 9-klas-tarasenkova-2017
Algebra 9-klas-tarasenkova-2017Algebra 9-klas-tarasenkova-2017
Algebra 9-klas-tarasenkova-2017
 
7
77
7
 
25
2525
25
 
5971 789623
5971 7896235971 789623
5971 789623
 
Підручник Математика 4 клас С. П. Логачевська, Т. А. Логачевська (2021 рік) Ч...
Підручник Математика 4 клас С. П. Логачевська, Т. А. Логачевська (2021 рік) Ч...Підручник Математика 4 клас С. П. Логачевська, Т. А. Логачевська (2021 рік) Ч...
Підручник Математика 4 клас С. П. Логачевська, Т. А. Логачевська (2021 рік) Ч...
 
Matematyka 4-klas-lohachevska-2021-2
Matematyka 4-klas-lohachevska-2021-2Matematyka 4-klas-lohachevska-2021-2
Matematyka 4-klas-lohachevska-2021-2
 
інформатика алгор та прогр по підручнику верлань 2 стор на 1 листку
інформатика алгор та прогр по підручнику верлань 2 стор на 1 листкуінформатика алгор та прогр по підручнику верлань 2 стор на 1 листку
інформатика алгор та прогр по підручнику верлань 2 стор на 1 листку
 
Учень, як вчений
Учень, як вченийУчень, як вчений
Учень, як вчений
 
Mka python jr-urok_05_ua_1563258882
Mka python jr-urok_05_ua_1563258882Mka python jr-urok_05_ua_1563258882
Mka python jr-urok_05_ua_1563258882
 
конспект урока з математики для 5а класа
конспект урока з математики для 5а класаконспект урока з математики для 5а класа
конспект урока з математики для 5а класа
 
Урок-гра:Порівняння чисел
Урок-гра:Порівняння чиселУрок-гра:Порівняння чисел
Урок-гра:Порівняння чисел
 
Lecture 07 swift
Lecture 07 swiftLecture 07 swift
Lecture 07 swift
 
Less35
Less35Less35
Less35
 
Less36
Less36Less36
Less36
 
Less37
Less37Less37
Less37
 

Recently uploaded

Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
tetiana1958
 
Основи_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdfОснови_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdf
olaola5673
 
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
Olga Kudriavtseva
 
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdfГлавлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
olaola5673
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
Olga Kudriavtseva
 
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
estet13
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
Olga Kudriavtseva
 
29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx
Репетитор Історія України
 
Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»
Vinnytsia Regional Universal Scientific Library named after Valentin Otamanovsky
 
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdfПідсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
ssuser7541ef1
 

Recently uploaded (10)

Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
 
Основи_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdfОснови_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdf
 
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
 
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdfГлавлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
 
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
 
29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx
 
Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»
 
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdfПідсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
 

Mka python jr-urok_07_ua_1563258932

  • 1.
  • 2. Урок № 7 Рядки і символи ЗМІСТ Рядки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Робота з рядками. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Індексація рядків. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Методи рядків. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Метод find і rfind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Метод replace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Метод count. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Методи рядків. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Зрізи рядків. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Ознайомлення з модулем string. . . . . . . . . . . . . . . . 16
  • 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. Відповідно, у своїх про- грамах ви можете використовувати будь-який зручний для вас варіант.
  • 17.
  • 18. Урок № 7 Рядки і символи © Комп'ютерна Академiя ШАГ www.itstep.org Усі права на фото-, аудіо- і відеотвори, що охороняються авторським правом і фраг- менти яких використані в матеріалі, належать їх законним власникам. Фрагменти творів використовуються в ілюстративних цілях в обсязі, виправданому поставле- ним завданням, у рамках учбового процесу і в учбових цілях, відповідно до ст. 1274 ч. 4 ГК РФ і ст. 21 і 23 Закони України «Про авторське право і суміжні права». Обсяг і спосіб цитованих творів відповідає прийнятим нормам, не завдає збитку нормально- му використанню об’єктів авторського права і не обмежує законні інтереси автора і правовласників. Цитовані фрагменти творів на момент використання не можуть бути замінені альтернативними аналогами, що не охороняються авторським правом, і відповідають критеріям добросовісного використання і чесного використання. Усі права захищені. Повне або часткове копіювання матеріалів заборонене. Узгодження використання творів або їх фрагментів здійснюється з авторами і правовласниками. Погоджене використання матеріалів можливе тільки якщо вказано джерело. Відповідальність за несанкціоноване копіювання і комерційне використання матеріалів визначається чинним законодавством України.