Рядковий тип даних
Нова українська школа
Урок 42
Інформатика 8
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.
Рядковий тип даних
Для опрацювання текстових даних у мові програмування Python існує тип даних str (від англ. string — рядок).
Початок і кінець рядка позначають лапками одного виду.
Значенням величини типу str є послідовність символів, яку у виразах беруть в:
або
одинарні лапки
подвійні лапки
' '
'' ''
s = 'це рядок'
s = "це рядок"
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Рядковий тип даних
Рядок із апострофом слід брати в подвійні лапки, і навпаки:
s1 = "Я, сім'я, Україна"
s2 = 'Фільм "Земля" (реж. О. Довженко)'
Якщо рядок містить як апострофи, так і лапки, перед тими з них, що збігаються з обмежувачами, ставлять символ:
s3 = "Сім'я дивиться фільм \"Земля\""
\
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Рядковий тип даних
Величину будь-якого типу можна перетворити на рядок функцією str().
Програмний код
Результат
'150000.0'
'0.3333333333333333'
'15'
s1=str(1.5e+5)
print(s1)
s2=str(1/3)
print(s2)
s3=str(15)
print(s3)
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Доступ до символів у рядку
Для опрацювання всіх символів рядка зручно скористатися циклом:
for <змінна> in <рядок>
Під час виконання такого циклу змінна почергово набуває значень окремих символів рядка.
Виведемо символи рядка, введеного з клавіатури, поставивши після кожного з них двокрапку.
країна
к:р:а:ї:н:а:
s = input()
for c in s:
print(c, end = ':')
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Доступ до символів у рядку
До певного символу в рядку можна звернутися за його індексом (номером у рядку). Нумерація зростає від 0 (від початку рядка) або спадає від -1 (від кінця рядка).
Програмний код
Результат
р
д
s = 'Це рядок'
print(s[3])
print(s[-3])
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Доступ до символів у рядку
Отриманий за індексом символ можна присвоїти іншій змінній.
Програмний код
Результат
я
s = 'Сонечко яскраво сяє'
b = s[8]
print(b)
Якщо спробувати отримати доступ до індексу за межами діапазону або використовувати числа, відмінні від цілих (наприклад, числа з рухомою комою), Python видасть помилку.
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Доступ до символів у рядку
Із рядка можна добувати зріз: копіювати деяку послідовність символів рядка (не обов’язково суміжних) за певним правилом.
Команда добування зрізу з рядка:
а = s[i: j: step]
змінна, в яку зберігаються добуті символи
a
індекс початку зрізу
і
індекс межі кінця зрізу (не входить у зріз)
j
крок, з яким вибираються символи
step
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Доступ до символів у рядку
Розглянемо застосування операції добування зрізу на прикладі рядка:
s = 'Сонечко яскраво сяє'
Приклад
Опис
Результат
a = s[8:15]
Зріз від символу з номером 8 рядка s включно до символу з номером 14
a = 'яскраво'
a = s[:7]
Зріз від початку рядка до символу з номером 6
a = 'Сонечко'
a = 'яскраво'
a = 'Сонечко'
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Доступ до символів у рядку
Продовження…
s = 'Сонечко яскраво сяє'
Приклад
Опис
Результат
a = s[8:]
Зріз від символу з номером 8 рядка s до кінця рядка
a = 'яскраво сяє'
a = s[::2]
Копіювання символів з рядка s із кроком 2
a = 'Снчоякаосє'
a = s[::-1]
Запис символів рядка s у зворотному порядку
a = 'єяс оваркся окченоС'
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Дії над рядковими величинами
Рядки в Python є незмінюваними послідовностями.
Спроба замінити символ у рядку викликає помилку.
Програмний код
Результат
TypeError: 'str' object does not support item assignment
s = 'Сонечко'
s[2] = 'л'
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Дії над рядковими величинами
Згадаймо прийоми опрацювання рядків.
Операція
Опис
Приклад
len(s)
Кількість символів у рядку
k = len('Сорока')
# k = 6
subs in s
Визначення наявності підрядка subs у рядку s
a = 'y' in 'Python'
# a = True
s1+s2
Об’єднання рядків s1 і s2 в один рядок s (конкатенація)
s = 'Сонце' + ' ' + 'сяє'
# s = 'Сонце сяє'
n*s
Дублювання рядка s n разів
s1 = '+’*4
# s1 = '++++'
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Дії над рядковими величинами
Відповідні операції доступні й у вигляді методів рядкових об’єктів. У наведених прикладах методи викликаються для змінної s, яка містить опрацьовуваний рядок.
Назва методу
Опис дії
s.find(s1)
Шукає в рядку s підрядок s1 і повертає номер першого символу шуканого підрядка в рядку або -1, якщо в s немає підрядка s1
s.replace(sfind, sins)
У рядку s замінює підрядок sfind підрядком sins
s.count(subs)
Повертає кількість входжень підрядка subs у рядок s
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Дії над рядковими величинами
Рядкові методи утворюють новий рядок. Для подальшого використання результату виконання, його слід зберегти в змінній:
Програмний код
Результат
школа
S = 'шпала'
m = S.replace('па', 'ко')
print(m)
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Багаторядкове текстове поле
Багаторядкове текстове поле є об’єктом класу Text. За замовчуванням створюється віджет висотою (height) 24 знакомісця і шириною (width) 80 знакомісць. Значення цих властивостей можна задати при створенні об’єкта.
Значення WORD властивості wrap вмикає перенесення слів у полі на новий рядок цілком, а не по буквах.
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Багаторядкове текстове поле
Створимо об’єкт text1 класу Text.
text1 = Text(width = 35, height = 6, wrap = WORD)
text1.pack()
Якщо в текстове поле введено більше рядків тексту, ніж висота поля, то під час перегляду текст можна прокручувати вгору й униз за допомогою колеса миші й клавіш керування курсором.
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Методи Text
Основні методи в Text такі самі, як у Entry:
get()
insert()
delete()
Проте, викликаючи методи для багаторядкового поля, для символів слід зазначати два індекси, відокремлені крапкою, — номер рядка й номер символу в ньому.
Нумерація рядків починається з одиниці, а стовпців — з нуля.
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Методи Text
Виведемо в поле об’єкта text1 вірш.
Щоб вірш виводився по рядках, початок кожного рядка слід позначити символом перенесення рядка \n:
s = "Встала весна, чорну землю\n
Сонну розбудила,\n
Уквітчала її рястом,\n
Барвінком укрила.\n
Т. Г. Шевченко"
text1.insert(1.0,s)
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Методи Text
Отримаємо з поля віджета text1 символи 1 рядка з індексами від 0 до 12.
Програмний код
Результат
Встала весна
subs = text1.get(1.0, 1.12)
print(subs)
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Методи Text
Щоб отримати один рядок із поля Text, потрібно вказати допустимий індекс для початку рядка, а потім зазначити той ший індекс із додаванням "lineend":
Програмний код
Результат
Встала весна, чорну землю
subs = text1.get(1.0, "1.0 lineend")
print(subs)
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Методи Text
Щоб отримати з поля Text його вміст, починаючи з певної позиції і до кінця, як другий параметр потрібно вказати END:
Програмний код
Результат
Встала весна, чорну землю
Сонну розбудила,
Уквітчала її рястом,
Барвінком укрила.
Т. Г. Шевченко
s = text1.get(1.0, END)
print(s)
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Питання для самоперевірки
а) a = s[2:5];
б) a = s[:3];
в) a = s[5:];
г) a = s[::2];
ґ) a = 5*s[2];
д) а = s[: :–1].
а) отримати підрядок рядка s з 2-го символу по 5-й включно;
б) отримати підрядок з останніх п’яти символів рядка s.
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Розгадайте ребус
Рядок
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Домашнє завдання
Проаналізувати
с. 199-204
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Працюємо за комп’ютером
Сторінка
203-204
Розділ 5
§ 31
© Вивчаємо інформатику teach-inf.com.ua
Успіхів�у навчанні!
Нова українська школа
Урок 42
Інформатика 8
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.