Попередня сторінка: Рядки як послідовності символів
Наступна сторінка: Списки — змінювані послідовності
Ви вже знайомі з прийомами опрацювання текстів у текстовому редакторі, наприклад із пошуком і заміною символів . Мова Python має засоби для того, щоб запрограмувати подібні дії з рядковими величинами . Зважаючи на те, що всі змінні в Python є об’єктами, відповідні операції доступні у вигляді методів
Синтаксис виклику методу для рядкової змінної: ім'я змінної.назва методу (параметри)
Рядкові методи в Python не змінюють рядка, а утворюють новий
Якщо потрібно далі в програмі використовувати результат виконання методу, його слід зберегти в новій змінній
Рядкові методи
Розглянемо деякі методи опрацювання рядкових величин і проаналізуємо результат застосування цих методів в інтерактивному режимі . У наведених далі прикладах методи викликаються для змінної s, яка містить рядок, який опрацьовується .
Пошук символів у рядку
Метод find() шукає задану групу символів у рядку s і повертає номер першого символу шуканого підрядка в рядку.
Якщо підрядок не знайдено, результат виклику методу дорівнює -1: nomer = s.find(subs),
де nomer — змінна цілого типу, яка отримує значення індексу першого символу підрядка subs у рядку s; subs — шуканий підрядок.
Знайдемо індекс першого символу підрядка 'га' у рядку s:
Заміна символів у рядку
Метод replace() шукає й замінює шуканий підрядок у заданому рядку:
де srez — змінна для рядка, що повертає метод; sfind — підрядок, який потрібно замінити у рядку s; sins — рядок, яким буде замінений підрядок sfind .
Якщо sins = '' (порожній рядок), то метод replace просто вилучить знайдені підрядки
Замінимо в рядку s усі підрядки 'cry' на підрядки 'smile' і результат запишемо в змінну si:
Визначення кількості входжень підрядна
За допомогою методу count() можна визначити кількість входжень заданої групи символів у рядок: kilk = s.count(subs),
де kilk — змінна цілого типу, яка отримує значення кількості входжень підрядка subs у рядок s; subs — шуканий підрядок.
Підрахуємо кількість повторень підрядка 'га' в заданому рядку s . Результат присвоїмо змінній k:
Перевірка складу рядка
Іноді буває потрібно перевірити, чи складається рядок тільки з літер або тільки з цифр. Для цього в Python є спеціальні методи, які повертають логічне значення (True або False). А саме:
• s.isdigit() — повертає True, якщо рядок s містить тільки цифри;
• s.isalpha() — повертає True, якщо рядок s містить тільки літери .
Напишемо код, який пропонує користувачеві створити пароль, що складається тільки з літер:
Функції користувача
Методи можна порівняти з цеглинками, з яких ви складаєте свою програму. Що робити, якщо немає методу, який виконує потрібну в алгоритмі розв’язування задачі дію? Ми можемо самі створити таку «цеглинку» — описати функцію користувача.
З правилами опису й виклику функцій користувача ви ознайомились у 6 класі .
Опис функції:
def ім'я_функції(<перелік формальних параметрів>): тіло функції
Тіло функції являє собою послідовність операторів, які будуть виконані після викликання функції. Після того як функцію створено, її можна викликати з іншої функції або безпосередньо з програми .
Щоб викликати функцію, потрібно:
1) ввести ім’я функції й додати дужки;
2) у дужках перелічити аргументи функції — значення, які під час виклику будуть присвоєні формальним параметрам
Якщо формальних параметрів немає, то після імені функції потрібно залишити порожні дужки
Опишемо функцію ins для вставляння підрядка subs у заданий рядок s після n-го символу:
Запишемо рядок s у зворотному порядку, вилучивши пропуски: def rev(s):
Зашифруємо речення шляхом вставлення заданого рядка після кожної літери:
Задано текстовий рядок . Вилучимо з нього всі цифри .
Опрацювання рядкових величин лежить в основі програм, які призначено для шифрування та дешифрування текстів, автоматичного перекладу тощо.
Питання для самоперевірки
1. За допомогою яких засобів можна отримати підрядок заданого рядка? Поясніть на прикладі .
2. Як можна вилучити підрядок із заданого рядка?
3. Як запрограмувати вставляння підрядка в заданий рядок?
4. Обчисліть значення функції:
5. Яких значень набудуть змінні внаслідок послідовного виконання операторів, якщо початкові значення а = 'ми b = 'вивчаємо ';
6. Непорожній рядок, який однаково читається як зліва направо, так і справа наліво, називається паліндромом (наприклад, «козак з казок») . Напишіть програму для визначення, чи є уведений рядок паліндромом .
Вправа 5
У ХІХ ст. для пересилання важливих повідомлень використовувались шифри, в яких літери переставляються за певним правилом . Напишіть програму, що шифрує повідомлення, міняючи місцями кожні два знаки .
1) Запрограмуйте введення значення змінної s.
2) Створіть змінну si для формування результату і запишіть у неї порожній рядок
3) Число символів у рядку s має бути парним, тому запишіть оператор розгалуження для реалізації такої дії: якщо довжина рядка s є непарним числом, то додати до рядка пропуск:
4) Запишіть оператор циклу для перебору непарних індексів . В тілі циклу до рядка s1 додаються символи
5) Виведіть зашифроване повідомлення .
6) Збережіть програмний код у файлі з іменем Vprava5 . Випробуйте програму.
Переконайтесь, що повідомлення успішно розшифровується за допомогою цієї ж програми
Комп’ютерне тестування
Виконайте тестове завдання 5 із автоматичною перевіркою результату
Практична робота і
Створення програм для опрацювання рядкових величин
Завдання: скласти програму для розв’язування задачі .
Задача. Дано номер мобільного телефону й прізвище власника (власниці) . Зашифрувати прізвище власника, замінивши символи їх кодами . Визначити PIN-код власника, що дорівнює сумі цифр у номері телефону. Вивести в зашифрованому вигляді прізвище власника та PIN-код (див . рисунок) .
Обладнання: комп’ютер зі встановленим середовищем програмування Python .
Хід роботи
Під час роботи з комп’ютером дотримуйтеся правил безпеки.
У Python IDLE виберіть команду File ^ New File.
1. Запишіть команду завантаження модуля tkinter.
2. Створіть вікно програми розмірами 500 х 200 із заголовком Шифрування .
3. Створіть віджети labl—lab4 класу Label . Задайте для них значення властивості text відповідно до рисунка
4. Створіть віджети entry!, entry2 класу Entry для введення прізвища та номера мобільного телефону:
5. Створіть віджети entry3, entry4 класу Entry для виведення зашифрованого прізвища власника та його PIN-коду.
6. Додайте до вікна віджет Ь1 класу Button:
7. Запишіть заголовок функції — обробника події для кнопки Ь1: def b1_click():
8. У тілі функції — обробника події для кнопки візьміть значення з текстового поля entry1:
s = entry1.get()
Створіть змінну shifr і запишіть у неї порожній рядок . У циклі fo визначте код кожного символу рядка s, перетворіть числове зна чення коду на тип str і додайте до рядка shifr:
9. Значення рядка shifr виведіть до текстового поля entry3: entry3.delete(0, END)
entry3.insert(0, shifr)
10. У тілі функції прочитайте значення з текстового поля entry2: number = entry2.get()
Для обчислення суми цифр у рядку number кожний символ рядка number[i] перетворіть на тип int і додайте до значення суми pin:
Виведіть отримане значення суми pin до текстового поля entry4.
11. Останнім рядком програмного коду запишіть оператор запуску головного циклу обробки подій
12. Збережіть програмний код з іменем Практична1.
Випробуйте програму
Зробіть висновок про результати роботи.
Це матеріал з підручника Інформатика за 7 клас Бондаренко
Наступна сторінка: Списки — змінювані послідовності