Інформація про новину
  • Переглядів: 80
  • Дата: 4-10-2021, 08:29
4-10-2021, 08:29

33. Рядковий тип даних в Python

Категорія: Інформатика





Попередня сторінка:  32. Математичні функції в Python
Наступна сторінка:   34. Робота з текстовими файлами в Python

Для опрацювання текстових даних у Python існує тип даних str (від англ. string — рядок).

Значенням величини типу str є послідовність символів, яку у виразах беруть в одинарні або подвійні лапки:

Початок і кінець рядка позначають лапками одного виду.

Рядок, який містить апостроф, слід брати в подвійні лапки, і навпаки:

Якщо рядок містить як апострофи, так і лапки, перед тими з них, що збігаються з обмежувачами, ставлять символ

Величину будь-якого типу можна перетворити на рядок за допомогою функції str() (рис. 33.1).

Доступ до символів у рядку

Для опрацювання всіх символів рядка зручно скористатись циклом for <змінна> in <рядок>, під час виконання якого змінна почергово набуває значень окремих символів рядка.

Виведемо символи рядка, введеного з клавіатури, поставивши після кожного з них двокрапку:

До певного символу в рядку можна звернутися за його індексом (номером позиції в рядку; нумерація починається з 0). Відлік символів можна також вести з кінця рядка, починаючи з -1 (рис. 33.2).

Крім того, можна добувати зріз (підрядок), тобто копіювати деяку послідовність символів із рядка або частину рядка за певним правилом.

Оператор добування зрізу з рядка:

де z — змінна, в яку зберігається підрядок рядка s; і — індекс початку зрізу; j — індекс межі кінця зрізу (не входить у зріз); step — крок, з яким вибираються символи.

Розглянемо застосування операції добування зрізу на прикладі рядка s = 'Сонечко яскраво сяє'.

Приклад

Опис

Результат

Зріз від символу з номером 8 рядка s включно до символу з номером 14

z = 'яскраво'

Зріз від початку рядка до символу з номером б

z = 'Сонечко'

Зріз від символу з номером 8 рядка s до кінця рядка

z = 'яскраво сяє'

Копіювання символів з рядка s із кроком 2

z = 'Снчоякаосе'

Запис символів рядка s у зворотному порядку

z = 'єяс оваркся окченоС'

Дії над рядковими величинами

Згадаємо прийоми опрацювання рядків. Розглянемо таблицю:

Мова Python надає й інші можливості для опрацювання текстів. Відповідні операції доступні у вигляді методів рядкових об’єктів.

У наведених далі прикладах методи викликаються для змінної s, яка містить опрацьовуваний рядок. Розглянемо таблицю:

Назва методу

Опис дії

Шукає у рядку s задану групу символів і повертає номер першого символу шуканого підрядка в рядку або -1, якщо в s немає підрядка si

У рядку s замінює підрядок sfind підрядком sins

Повертає кількість входжень підрядка subs у рядок s

Рядки в Python належать до незмінюваних об’єктів. Тобто рядкові методи в Python не змінюють рядка, а утворюють новий. Якщо потрібно далі в програмі використовувати результат виконання методу, його слід зберегти в новій змінній:

Багаторядкове текстове по/іе

Багаторядкове текстове поле є об’єктом класу Text. За замовчуванням висота створюваного віджета дорівнює 24 знакомісцям, ширина становить 80 знакомісць. Значення цих властивостей можна задати при створенні об’єкта.

Значення WORD властивості wrap вмикає перенесення слів у полі на новий рядок цілком, а не по літерах.

Якщо в текстове поле вводити більше рядків тексту, ніж висота поля, то його вміст автоматично прокручуватиметься вниз. Під час перегляду текст можна прокручувати вгору й униз за допомогою колеса миші та клавіш керування курсором.

Методи Text

Основні методи в Text такі самі, як у Entry, — get(), insert(), delete(). Проте для багаторядкового поля необхідно зазначати два індекси — номер рядка і номер символу в ньому, відокремлені крапкою.

Нумерація рядків починається з одиниці, а стовпців — з нуля.

Виведемо в поле об’єкта textl вірш.

Щоб вірш виводився по рядках, слід додати в початок кожного рядка символ перенесення рядка \п (рис. 33.3):

Застосовуючи метод get(), слід мати на увазі, що в кінці кожного рядка та в кінці всього тексту багаторядкового поля завжди є символ перенесення рядка. Якщо цей символ в кінці тексту не потрібен, то метод слід викликати так: s = text.get(1.0, 'end—1с'). Якщо в константі 'end-1 с' замість числа 1 вказати інше ціле число, то буде відкинуто відповідну кількість символів.

Питання для самоперевірки

1. Що таке зріз рядка? Як його отримати?

2. Визначте, якого значення набуває змінна а після виконання операторів, якщо s = 'Сонечко':

3. Запишіть оператор, що реалізує таку дію:

а) отримати підрядок рядка s з 2-го символу по 5-й включно;

б) отримати підрядок з останніх п’яти символів рядка s.

4. Розгадайте фразу і запишіть оператор для її розшифрування:

а) s = 'яа клеюгбмлщюй кіеннфгошрщмзазтхиткуур';

б) s = 'мофинвафин пайфинтонфин'.

5. Складіть програму для визначення, чи є паліндромом уведений з клавіатури рядок s.

6. Поясніть порядок використання текстового поля.

Вправа зз

Скласти програму для шифрування тексту.

1) Завантажте середовище PyCharm. Створіть Python file із назвою Вправа 33. Завантажте модуль tkinter.

Створіть вікно програми із заголовком Шифрувальник. Завершіть програму оператором

2) Створіть об’єкт text класу Text. Усі віджети розміщуйте за допомогою методу grid().

Уставте в поле віджета текст:

3) Створіть кнопки — об’єкти b_shifr, b_delete класу Button (рис. 33.4). Обробникам подій для кнопок надайте назви shifrText, deleteText.

4) Опишіть обробник події для кнопки b_delete:

5) Опишіть обробник події для кнопки b_shifr:

Випробуйте програму.

Уведіть текст і натисніть кнопку Зашифрувати.

Проаналізуйте, який спосіб шифрування використано.

6) Придумайте свій спосіб шифрування тексту і змініть опис функції shifrText(), щоб застосувати цей спосіб.

Комп'ютерне тестування

Виконайте тестове завдання 33 із автоматичною

перевіркою результату.

 

Це матеріал з підручника Інформатика 8 клас Бондаренко (2021)

 



Попередня сторінка:  32. Математичні функції в Python
Наступна сторінка:   34. Робота з текстовими файлами в Python



^