
- •1.2 Форматування виведення інформації
- •1.3 Конвертування між стрічками і списками.
- •Модуль string
- •2. Засоби керування логікою.
- •2.1 Умовні вирази
- •Корпус nltk.Book
- •2.2 Конструкція list comprehension
- •Виконати самостійно:
- •2.3. Обробка кожного елемента:
- •3. Умовна інструкція
- •3.1. Структура умовної інструкції
- •3.2 Умови
- •3.3. Неповна інструкція галуження
- •3.4. Інструкція множинного галуження
- •3.5. Вкладені умовні інструкції
- •4. Цикл з умовою
- •4.2. Ітерації і If твердження.
- •Модуль random
- •Додаток а
- •Функції для роботи зі списками
- •Порядок виконання роботи
- •Варіанти завдань
- •Література
- •Інтернет посилання
- •Методичні вказівки
2. Засоби керування логікою.
Програми, які згадувалися в лабораторній роботі №1 є простими. Основною особливістю програмування є спроможність програми приймати рішення від імені людини, виконуючи інструкції, коли справджуються певні умови або послідовно обробляти текстові дані до тих пір поки не задоволена певна умова. Таким засобом керування поведінкою програми є контрольні структури.
2.1 Умовні вирази
Python підтримує широкий набір операторів для встановлення взаємозв’язків між змінними (значеннями). Повний набір цих операторів наведений у таблиці 1.
Таблиця 1.
Оператор |
Значення |
< |
Менше |
<= |
Менше або дорівнює |
== |
Дорівнює |
!= |
Не дорівнює |
> |
Більше |
>= |
Більше або дорівнює |
Можна використовувати ці оператори безпосередньо:
>>> 3<5
True
>>> 5<3
False
>>> not 5<3
True
>>>
В результаті ми отримали вирази із булевими значеннями True, False. In, not - це булеві оператори. Стрічки і списки також підтримують умовні вирази.
>>> word='sovereignty'
>>> 'sovereignty' in word
True
>>> 'gnt' in word
True
>>> 'pre' in word
False
>>> 'Hello' in ['Hello','World']
True
>>> 'Hell' in ['Hello','World']
False
>>>
Корпус nltk.Book
Для подальшої роботи нам будуть необхідні великі масиви текстів, тому скористаємося корпусами текстів Пітона.
>>> import nltk
>>> from nltk.book import *
*** Introductory Examples for the NLTK Book ***
Loading text1, ..., text9 and sent1, ..., sent9
Type the name of the text or sentence to view it.
Type: 'texts()' or 'sents()' to list the materials.
text1: Moby Dick by Herman Melville 1851
text2: Sense and Sensibility by Jane Austen 1811
text3: The Book of Genesis
text4: Inaugural Address Corpus
text5: Chat Corpus
text6: Monty Python and the Holy Grail
text7: Wall Street Journal
text8: Personals Corpus
text9: The Man Who Was Thursday by G . K . Chesterton 1908
Можна перевірити наявність певних слів як в окремих реченнях так і в усьому тексті:
>>> 'hello' in sent7
False
>>> 'hello' in text1
False
>>> 'he' in text1
True
>>>
2.2 Конструкція list comprehension
Загальною схемою роботи цих прикладів є конструкція типу
([w for w in text if condition ])
де condition умова, яка справджується або ні (приймає значення True або False ).
Звичайно ми використовуємо умовні оператори, як частину If операторів. Для перевірки властивостей окремих слів існує набір наступних функцій.
Таблиця 2.
Функція |
Пояснення |
s.startswith(t) |
чи починається s з t |
s.endswith(t) |
чи закінчується s на t |
t in s |
Чи t міститься в s |
s.islower() |
Чи всі символи в s є малі |
s.isupper() |
Чи всі символи в s є великі |
s.isalpha() |
Чи всі символи в s є букви |
s.isalnum() |
Чи всі символи в s є букви і цифри |
s.isdigit() |
Чи всі символи в s є цифри |
s.istitle() |
Чи всі слова в s є з великої літери |
Розглянемо наступні приклади використання цих операторів для вибору окремих слів з тексту:
а. Слова з закінченням –ableness
>>> sorted([w for w in set(text1) if w.endswith('ableness')])
['comfortableness', 'honourableness', 'immutableness', 'indispensableness', ...]
б. Слова , які містять gnt
>>> sorted([term for term in set(text4) if 'gnt' in term])
['Sovereignty', 'sovereignties', 'sovereignty']
в. Слова, які починаються з великої літери
>>> sorted([item for item in set(text6) if item.istitle()])
['A', 'Aaaaaaaaah', 'Aaaaaaaah', 'Aaaaaah', 'Aaaah', 'Aaaaugh', 'Aaagh', ...]
г. Слова, які повність складаються з цифр
>>> sorted([item for item in set(sent7) if item.isdigit()])
['29', '61']
>>>
Можна ставити і складніші умови. Якщо С це умова, то not C це також умова. Якщо є дві умови С1 та С2, то побудувати нову умову використовуючи оператори диз’юнкції та кон’юнкції: c1 and c2, c1 or c2