Типи даних
Типи даних
Ми вже познайомилися з двома типами даних — рядками та цілими числами. Але в Python є й багато інших типів даних. У них ми сьогодні й розберемось.
Та спершу, зазначимо, що в Python типи даних можна поділити на змінювані та незмінні. Різниця в тому, що змінити об'єкт із незмінним типом даних не вийде, натомість у пам'яті створиться новий об'єкт, який буде містити зміни.
До незмінних належать такі типи даних:
- Числа
- Рядки
- Кортежі
- frozenset
До змінних:
- Списки
- Словники
- Множини
Створимо новий проєкт на сервісі repl.it, з ім'ям, яке вам подобається, а як мову програмування знов виберіть Python(with turtle).
Числа
З цілими числами, тип яких називається int (від англ. integer — ціле число) ми вже познайомились, але як бути з дробовими числами, наприклад, 25,8? Скористаємось вже знайомим синтаксисом й виведемо тип даного числа. Але зверніть увагу, щоби Python правильно нас зрозумів і не видав помилки, необхідно замість коми в цьому числі поставити крапку. Маємо код:
Запустивши його, отримаємо (відео 1):
Видео 1
Отже, тип числа 25,8 – float – дійсне число. А якщо імпортувати вже знайому бібліотеку turtle, з допомогою дійсних чисел ми зможемо нарисувати багато інших фігур. Наприклад, зобразимо єгипетський прямокутний трикутник, у якого довжини сторін кратні числам 3, 4 та 5. Збільшимо їх в 10 разів, й отримаємо такі довжини: 30, 40, 50. Знаючи довжини сторін, лишається знайти необхідний кут повороту черепашки. Для цього скористаємось калькулятором трикутника, доступним за посиланням. Введемо довжини сторін і отримаємо значення кутів (мал. 1):
Маючи значення кутів, можемо скласти код для рисування трикутника:
from turtle import *
shape("turtle")
forward(50)
left(180)
right(53.13)
forward(30)
left(90)
forward(40)
Запустимо (відео 2):
Видео 2
Як бачимо, дійсні числа дали змогу нарисувати нам трикутник.
Але це не все.
Наступним типом чисел є логічні — bool. Вони набувають усього двох значень — логічного нуля (False) або логічної одиниці (True). Вони створені для того, щоби перевіряти вірність (True) або невірність (False) твердження. Для прикладу перевіримо чи істинне твердження, що число 4 дорівнює числу 4. Додатково виведемо тип цього твердження. Для цього пропишемо:
Запустивши код побачимо (відео 3):
Видео 3
Нам повернулось значення True, отже, твердження вірне.
Рядки
Ми лише виводили рядки, але Python дає змогу проводити з ними багато інших цікавих операцій. Наприклад, дізнатися довжину рядка, використавши функцію len(). Запишемо код:
Отримаємо (відео 4):
Видео 4
Рядки також можна додавати між собою, або множити на число. Наприклад:
string = " Hello World!"
string_2 = "- Hello to You!"
string_sum = string + string_2
big_str = string*3
print("string_sum - ", string_sum)
print("big_str -", big_str)
Результат (відео 5):
Видео 5
З допомогою методу split() можна розбивати рядок на частини. Водночас буде створено список, у який будуть поміщені ці рядки.
Список — масив даних, тобто контейнер, у якому можна зберігати різні дані. На наступних заняттях ми обов'язково попрацюємо з ними, але поки що повернемось до рядків. Запишемо:
Результат (відео 6):
Видео 6
Ми отримали масив, який містить у собі два рядки. Бачимо, що вони роз'єднались у місці пробілу. Але у функцію split() можна передати рядок, який стане розділовим знаком. Наприклад, як аргумент використаємо рядок "о" (відео 7):
Видео 7
Поекспериментуйте. Спробуйте розділити рядок іншими буквами.
Також можна зробити всі літери рядку маленькими або великими. Тут стануть у пригоді методи lower() та upper(). Якщо необхідно, щоби всі слова рядку починалися з великої літери, використовується метод title(). А ось метод capitalize() робить лише першу літеру великою, а всі інші — маленькими. І, нарешті, можна змінити регістр усіх символів на протилежний із допомогою методу swapcase(). Запишемо:
string_1 = "I am a String and I want to be printed"
print("lower -", string_1.lower())
print("upper -", string_1.upper())
print("title -", string_1.title())
print("capitalize -", string_1.capitalize())
print("swapcase -", string_1.swapcase())
Результат (відео 8):
Видео 8
А перевірити, чи починається рядок із підрядку можна використавши метод startswith(). Він повертає значення True, якщо рядок починається з підрядку в дужках. Для перевірки закінчення рядку використовується метод endswith(). Маємо:
string_1 = "I am a String and I want to be printed"
print(string_1.startswith('I am'))
print(string_1.endswith("printed"))
Результат (відео 9):
Видео 9
Перевірити, чи складається рядок виключно з цифр можна методом isdigit(). А чи складається рядок лише з букв — методом isalpha(). Якщо ж рядок складається лише з букв і цифр, метод isalnum() поверне значення True. Запишемо:
string_1 = "012345"
string_2 = "string"
string_3 = "string123"
print(string_1.isdigit())
print(string_2.isalpha())
print(string_3.isalnum())
Результат (відео 10):
Видео 10
Перевірку регістрів символів дають змогу проводити методи islower(), isupper(), istitle(). Очевидно, що islower() перевіряє чи є всі символи маленькими, isupper() — чи всі символи великі, а istitle() — чи починається кожне слово рядку з великої літери (відео 11):
Видео 11
Насправді будь-який рядок — це масив даних, елементами якого є букви та знаки. Це означає, що ми можемо звернутися до будь-якого елемента за його номером. Це називається "індексацією".
Важливо! Нумерація індексів в Python починається з нуля, отже буква "H" рядка "Hello World!" матиме нульовий номер.
Тоді номери індексів в рядку будуть наступними (мал. 2):
Перевіримо твердження, записавши:
Отримаємо (відео 12):
Видео 12
Але з допомогою індексації також можна одержати й більше знаків. Наприклад, спробуємо вивести слово "Hello". Для цього всередині квадратних дужок необхідно вказати індекс першого елементу й останнього, розділивши їх двокрапкою. Як ми вже перевірили, буква "H" матиме нульовий індекс, тоді буква "o" — четвертий. Алепід час індексації частини рядку, останній елемент не включається, тому для виведення всього слова, необхідно збільшити кінцевий індекс на одиницю. Маємо:
Запустивши код отримаємо (відео 13):
Видео 13
Зверніть увагу, якщо індексація починається з початкового елементу, то запис [0:5] буде еквівалентний [:5].
Але номери індексів можна почати рахувати з іншого боку. Тоді індекс першого елемента буде мати номер [-1]. Поглянь на картинку нижче. Номери індексів еквівалентні (мал. 3):
Отже, для виведення другого слова з допомогою від'ємних індексів достатньо прописати:
Запустимо код (відео 14):
Видео 14
Переставимо двокрапку й число -6 місцями (відео 15):
Видео 15
Отже, двокрапка вказує, звідки треба рахувати: у першому випадку рахували від числа -6, а переставивши — до числа -6. Але й це ще не все. Можна вказати крок, з яким буде проводитись індексація. Наприклад, будемо виводити кожен другий елемент. Тоді запишемо:
Запустивши код, отримаємо (відео 16):
Видео 16
Якщо ж потрібно вивести елементи з кроком на всьому рядку, достатньо прибрати індекси, що вказують на діапазон. Але важливо залишити двокрапку:
Результат (відео 17):
Видео 17
Щоби дізнатися чи є в рядку підрядок, можна використати методи find(), rfind(), index() та rindex(). Перший поверне номер індексу першого входження, другий — останнього. Якщо ж підрядок відсутній у рядку, повернеться значення «-1». Index() працює аналогічно find(), а rindex() — rfind(), але за відсутності підрядка в рядку, відбудеться помилка. Запишемо:
string_1 = "I am a String and I want to be printed"
print(string_1.find("I"))
print(string_1.index("I"))
print(string_1.rfind("I"))
print(string_1.rindex("I"))
Результат (відео 18):
Видео 18
Відредагувати рядок, замінивши один підрядок на інший можна завдяки методу replace(). Першим елементом у дужках має бути підрядок, який будемо заміняти, другим — на який необхідно замінити. Маємо:
А в результаті отримаємо (відео 19):
Видео 19
Коли необхідно дізнатися кількість входжень підрядку до рядка, використовують метод count(). Дізнаємось кількість букв "a" в рядку, для чого запишемо:
Маємо (відео 20):
Видео 20
Знайди черепашку
Ми запросили черепашку на наш екран, але сталася прикрість, черепашка загубилась у джунглях (мал. 4).
Допоможімо їй потрапити на наш екран, використавши отримані знання. Маємо:
from turtle import shape
jungle = "our jungle is very dense and impassable. there are many dangerous monsters in them"
turtle = ""
shape(turtle)
У змінній turtle маємо замість пустого рядка отримати рядок "turtle", використовуючи рядок jungle. Для цього дивимось на цей рядок і бачимо, що буква "t" є в трьох словах: there, monsters, them. Оскільки слово them в кінці, зручніше всього взяти цю букву саме в нього. Отже, додаємо до нашої змінної вираз jungle[-4]. Тоді змінна набуде вигляду:
Але це ще тільки початок і нам треба знайти всі інші частини черепашки. Тож не зупиняємось і бачимо, що буква "u" є в слові our і її індекс у рядку jungle буде під номером 1. Тож додаємо його до нашої змінної. Отримали:
Аналогічно шукаємо всі інші літери. Завершивши пошуки, отримаємо:
Зібрали, а тепер запустимо код і перевіримо (відео 21):
Видео 21
Ура! Наша черепашка повернулася на екран!
Отже, сьогодні ми розглянули типи даних, ознайомились із деякими із них. Розглянули методи для роботи з рядками та детально ознайомились із ними. Дізнались про індексацію та операції, які можна проводити з рядками.