Рядки
Рядки – це об’єкти, що складаються з послідовності символьних даних. В Python, рядки представлені типом даних str, який зберігає послідовність символів Unicode. Зчитування рядків відбувається за допомоги функції input.
Зазначимо, що в мові Python не має, як такого, символьного типу даних, символ – це рядок довжиною в 1 символ.
Нагадуємо, що рядкові літерали треба укладати в лапки. Можна використовувати лапки одинарні, подвійні або потрійні, при цьому лапки на початку рядка та в його кінці повинні співпадати. Якщо рядок укладений в потрійні лапки, в ньому можна довільно використовувати подвійні лапки чи апострофи.
Для рядків визначені базові операції складання (конкатенація) та операція добутку строки на ціле число (копіювання строк).
Базові операції із рядками.
Конкатенація – складання строк. За допомоги оператора додавання (+) можна об’єднати декілька рядків в один.
Приклад: створити програму, яка буде об’єднувати декілька рядків в один.
- a = ''Py''
- b = ''th''
- c = ''on''
- print(a+b+c) → 'Python'
Копіювання строк. За допомоги оператора добутку (*) можна створити декілька копій строки.
Приклад: створити програму, яка буде дублювати строку декілька раз.
- a = ''py.''
- с = 3
- print(a*с) → 'py.py.py.'
Перевірка на входження – in, not in. Оператор приналежності in перевіряє чи входить деяка підстрока у дану строку і повертає значення True або False, в залежності від результату.
Приклад: створити програму, яка буде перевіряти чи входить підрядок а в рядок b.
- print('Вкажіть строго-типізовану мову програмування:')
- a = input('Python, Java, Pascal')
- b = 'Pascal – строго типізована мова програмування'
- if a in b:
- print('Ви абсолютно праві')
- else:
- print('Ви помиляєтесь')
Функції перетворення.
В комп’ютері всю інформацію зберігають у вигляді цифр, для подання символьних даних використовується схема перетворення, яка містить кожен символ з його номером. Таким чином, якщо рядок складається із одного символу, до такого рядка можна застосувати функції перетворення.
Функція chr() – перетворює ціле число на символ.
Функція ord() – перетворює символ на ціле число.
Приклад: створити програму, яка буде виводити літери англійського алфавіту.
- a = ord('a')
- z = ord('z')
- for i in range(a, z+1):
- print(chr(i), end=' ')
Довжина рядка.
Функция len() – повертає довжину рядка, тобто визначає кількість символів, що містить рядок, включно із пропусками.
Приклад: створити програму, яка буде визначати точну кількість символів в рядку.
- s = input('введіть рядок: ')
- print('в рядку «',s,'» знаходиться',len(s),'символів')
Індексація рядків.
В мові програмування Python, окремі елементи в упорядкованому наборі даних можуть бути доступні за допомогою числового індексу або ключа. Цей процес називається індексація.
Для того щоб отримати доступ до окремих символів в рядку треба: вказати ім’я рядка та номер позиції символу в квадратних дужках.
Індексація рядків починається з нуля: у першого символу індекс 0, наступного 1 і так далі, індекс останнього символу – довжина строки мінус один (len(s)-1).
Таким чином окремі символи доступні за індексом наступним чином:
- s = 'python'
- print(s[0]) → p
- print(s[1]) → y
- print(s[2]) → t
- print(s[3]) → h
- print(s[4]) → o
- print(s[5]) → n
Спроба звернення за індексом більшого ніж len (s) – 1, призводить до помилки IndexError: string index out of range.
Індекси рядків можуть бути вказані і негативними числами. В цьому випадку індексування починається з кінця строки: -1 відноситься до останнього символу, -2 до передостаннього і так далі.
- s = 'python'
- print(s[-1]) → n
- print(s[-2]) → o
- print(s[-3]) → h
- print(s[-4]) → t
- print(s[-5]) → y
- print(s[-6]) → p
Для будь-якого не порожнього рядка s, код s [len (s) -1] та s [-1] поверне останній символ. Немає індексу, який можна застосувати до порожнього рядка.
Slices – зрізи рядків.
Зріз (slice) – отримання з цього рядка одного символу або деякого фрагмента підрядка або підпослідовності.
В мові Python існує три форми зрізів:
S[i] – повертає один символ із рядка S за індексом [і].
- s = 'python'
- print(s[0]) → p
S[a:b] – повертає рядок, який починається з символу а і завершується символом b-1.
- s = 'python'
- print(s[0:2]) → py
Можна також використовувати як позитивні, так і негативні індекси в одному зрізі, наприклад S[1:-1] – це рядок без першого і останнього символу (зріз починається з символу з індексом 1 і закінчується індексом -1, не включаючи його).
- s = 'python'
- print(s[1:-1]) → ytho
Якщо опустити другий параметр (але поставити двокрапку), то зріз береться до кінця рядка.
- s = 'python'
- print(s[2:])→ thon
S[a:b:d] – повертає рядок, що починається із символу з індексом а, в який будуть додані символи із індексами a + d, a+ 2*d … і далі, до символу з індексом b-1.
Приклад: скласти програму, яка з дати народження, що подана у форматі ДД.MM.РРРР буде повертати лише рік народження.
- data = input('Введіть дату народження у форматі ДД.ММ.РРРР: ')
- print(data[6:])
Методи.
Метод – це функція, яка застосовується до об’єкта. Метод викликається наступним чином:
Ім’я_об’екту.Ім’я_методу(параметри).
Методи find та rfind.
Метод find() – визначає індекс початкового входження (початкову позицію) символу або символів у зазначеному текстовому рядку з урахуванням регістру, якщо ж підрядок не буде знайдено, то метод поверне значення -1.
Приклад: скласти програму, яка визначить положення підрядка «Python» в текстовому рядку «Programming language Python».
- s = 'Programming language Python'
- print(s.find('Python')) → 17
- print(s.find('python')) → -1
Метод rfind() – визначає індекс останнього входження символу або символів у зазначеному текстовому рядку з урахуванням регістру, якщо ж підрядок не буде знайдено, то метод поверне значення -1. Тобто, пошук починається з кінця рядка.
Приклад: визначити положення останнього пропуску в текстовому рядку «Programming language Python».
- s = 'Programming language Python'
- print(s.rfind(' ')) → 20
Метод find або rfind можна викликати із декількома параметрами:
s.find('str', a) – пошук символу або символів ('str') буде відбуватися в зрізі s[а:], тобто від символу з індексом а і до кінця строки s.
- s = 'Programming language Python'
- print(s.find('r', 2)) → 4
s.find('str', a, b) – пошук символу або символів ('str') буде відбуватися в зрізі s[а:b], тобто від символу з індексом а і до символу з індексом b-1 в рядку s.
- s = 'Programming language Python'
- print(s.find('l')) → 12
- print(s.find('g', 4, 10)) → -1
Метод replace.
Метод replace() замінює всі входження одного рядка в інший, тобто s.replace(old, new) – замінює в рядку s все входження підрядка old на підрядок new.
Приклад:
- s = 'Hello'
- print(s.replace('l', 'L')) → 'HeLLo'
Метод replace може отримувати ще додатковий третій параметр, тобто s.replace(old, new, count), в цьому випадку заміняться лише перші count входження підрядка.
Приклад:
- s = 'Hello'
- print(s.replace('l', 'L', 1)) → 'HeLlo'
Метод count.
Метод s.count() – рахує кількість входжень одного рядка в інший рядок з урахуванням регістру, тобто s.count(t) – повертає число входжень рядка t у рядок s.
Приклад:
- s = 'Hello'
- print(s.count('l'))→ 2
Якщо вказати три параметра в методі s.count(t, а, b) – буде відбуватися розрахунок входжень рядка t у рядок s у зрізі s[a:b].
Методи зміни регістру рядка.
Метод s.capitalize() – повертає копію рядка s з першим символом, перетвореним у верхній регістр, і іншими символами, перетвореними в нижній регістр, не алфавітні символи не змінюються.
Приклад:
- s = 'python'
- print(s.capitalize()) → 'Python'
Метод s.lower() – повертає копію рядка s з усіма символами літер, перетвореними в нижній регістр, не алфавітні символи не змінюються.
Приклад:
- s = 'PYTHON'
- print(s.lower()) → 'python'
Метод s.upper() – повертає копію рядка s з усіма символами літер, перетвореними в верхній регістр, не алфавітні символи не змінюються.
Приклад:
- s = 'python'
- print(s.upper()) → 'PYTHON'
Метод s.title() – повертає копію рядка s в якій перша буква кожного слова перетворюється в верхній регістр, а інші літери – в нижній регістр.
Приклад:
- s = 'programming language python'
- print(s.title()) → 'Programming Language Python'
Класифікація рядків.
Метод s.isalpha() – повертає True, якщо рядок s не порожній, а всі його символи літери. В іншому випадку повертає False.
Метод s.isdigit() – повертає True коли рядок s не порожній, а всі його символи є цифрами. В іншому випадку повертає False.
Метод s.isalnum() – повертає True, якщо рядок s не порожній, а всі його символи є літери з цифрами. В іншому випадку повертає False.
Метод s.isupper() – повертає True, якщо рядок s не порожній, а всі його символи є прописними (великими). В іншому випадку повертає False.
Метод s.islower() повертає True, якщо рядок s не порожній, а всі його символи є строковими (малими). В іншому випадку повертає False.
Приклад: скласти програму, яка буде визначати чи є рядок, що вводить користувач з клавіатури числом, літерою або це рядок який містить і цифри і літери.
- s = input('Введіть будь-який рядок: ')
- if s.isalpha():
- print('Цей рядок містить лише літери')
- elif s.isdigit():
- print('Цей рядок містить лише цифри')
- elif s.isalnum():
- print('Цей рядок містить літери та цифри')
- else:
- print('Цей рядок містить інші символи')