4717

Обробка послідовностей при програмуванні на мові Python

Лабораторная работа

Информатика, кибернетика и программирование

Мета робота Вивчення основ програмування на мові Python. Короткі теоретичні відомості Обробка послідовностей Оператор for Оператор for в Python трохи відрізняється від аналогічного оператора в C або Pascal. Замість незмінного проходження по ...

Украинкский

2012-11-25

184.5 KB

6 чел.

Мета робота

Вивчення основ програмування на мові Python.

Короткі теоретичні відомості

1. Обробка послідовностей

1.1. Оператор for

Оператор for в Python трохи відрізняється від аналогічного оператора в C або Pascal. Замість незмінного проходження по арифметичній прогресії з чисел (як в Pascal) або надання користувачеві можливості вказати крок ітерації та умову останову (як в С), оператор for в Python проходить по всіх елементах будь-якої послідовності (списку або стрічки) в тому порядку, в якому вони в ній розташовуються.

Оператор for в Пітоні має вигляд:

for певна_змінна in певний_діапазон

Блок коду після заголовка виконується, поки певна_змінна належить до  певного_діапазону. Цей діапазон може бути списком, числовою послідовністю, масивом любих значень:

>>> phrase=['red', 'green', 'blue', 'yellow', 'black', 'white']

>>> for word in phrase:

print len(word),word

 

3 red

5 green

4 blue

6 yellow

5 black

5 white

>>>  

Ця програма виконує оператор print len(word), word для кожного елемента зі списку. Цей процес називається ітераціями. Наведемо інший приклад for циклу.

>>> total=0

>>> for w in phrase:

total+=len(w)

 

>>> total/len(phrase)

4

>>>

В цій програмі визначається відношення між загальною кількість символів в елементах списку та кількістю елементів списку. Для збільшення значення змінної або додавання до  рядка використовується +=, а  для зменшення -=.

Можна написати for цикл і для роботи з символами стрічки

>>> sent='red green blue yellow black white'

>>> for char in sent:

print char,

 

r e d   g r e e n   b l u e   y e l l o w   b l a c k   w h i t e

>>>  

Для виведення результату в один рядок, наприкінці оператора print змінна слід додати кому  «,».

1.2 Форматування виведення інформації

При використанні оператора print можна передбачати певне форматування. Без форматування одержуємо наступне:

>>> for word in phrase:

print word, '(', len(word),'),',

 

red ( 3 ), green ( 5 ), blue ( 4 ), yellow ( 6 ), black ( 5 ), white ( 5 ),

>>>

При виводі з форматуванням одержимо.

>>> for word in phrase:

print "%s (%d)," % (word,len(word)),

 

red (3), green (5), blue (4), yellow (6), black (5), white (5),

>>>

В цьому прикладі команда print має наступний синтаксис: format % values.

Format це частина яка містить специфікатори формату такі як:

%d

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

%f

Відповідна змінна може бути  числом з точкою або  конвертована у Число з точкою

%s

Відповідна змінна є стрічкою або може бути конвертована в стрічку

%c

Відповідна змінна є символом

Values це частина де записаний кортеж значень для якого визначені специфікатори формату.

Наступний приклад демонструє складніший випадок форматування.

>>> for word in phrase:

print "Word=%s\nIndex = %s\n******" % (word,phrase.index(word))

 

Word=red

Index = 0

******

Word=green

Index = 1

******

Word=blue

Index = 2

******

Word=yellow

Index = 3

******

Word=black

Index = 4

******

Word=white

Index = 5

******

>>>

Символ '\n' – це початок нового рядка. Символ '\t' – табуляція.

1.3 Конвертування між стрічками і списками.

Часто виникає потреба конвертації стрічки, яка містить послідовність слів записаних через побіл в список та списку в стрічку. Наступний цикл перетворить список в стрічку, а пробіл додаємо в циклі перед кожним зі слів.

>>> str=''

>>> for word in phrase:

str+=' '+word

 

>>> str

' red green blue yellow black white'

>>>

Зворотну операцію для перетворення стрічки в список можна звичайно здійснити побудувавши цикл, але доцільніше використати метод split() який розділить стрічку за символами пробілу, або можна ввести інший символ за яким буде здійснюватися розділення.

>>> str.split(' ')

['', 'red', 'green', 'blue', 'yellow', 'black', 'white']

>>> str.split('e')

[' r', 'd gr', '', 'n blu', ' y', 'llow black whit', '']

>>>

Модуль string

Модуль string є корисним модулем стандартних дистрибутивів мови Python. Щоб скористатися функціями модуля його потрібно імпортувати:

>>> import string

Тут зібрані функції для пошуку підстрічки у стрічці, заміни і тому подібне. Наприклад:

>>> s = "mary had a little lamb"
>
>> string.capwords(s)
'
Mary Had A Little Lamb'
>
>> string.replace(s, 'little', 'fercious')
'
mary had а ferocious lamb'

Існує багато  інших функції, ви можете знайти подробиці в керівництві по мові Python.

>>> help(string)

Help on module string:

NAME

   string - A collection of string operations (most are no longer used).

FILE

   c:\python26\lib\string.py

DESCRIPTION

   Warning: most of the code you see here isn't normally used nowadays.

   Beginning with Python 1.6, many of these functions are implemented as

   methods on the standard string object. They used to be implemented by

   a built-in module called strop, but strop is now obsolete itself.

Крім того, ви можете користуватися функціями string для отримання інформації про такі атрибути рядка, як довжина або позиції підстрічки, наприклад:

>>> import string
>
>> s = "mary had а little lamb"
>
>> string.find(s, 'had')
5
>
>> string.count(s, 'a')
4

І нарешті, string надає дуже характерну для мови Python особливість. Пара .split() і .join() забезпечує швидкий спосіб перетворення стрічок в списки і навпаки, що ви знайдете вельми корисним. Реалізується це просто:

>>> import string
>
>> s = "mary had а little lamb"
>
>> L = string.split(s)
>
>> L
['
mary', 'had', 'a', 'little', 'lamb']

>>> string.join(L, "-")
'
mary-had-a-little-lamb'

Еквівалентним є також і наступний запис

>>> from string import join

>>> join(L)

'mary had a little lamb'

>>>

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

Виконати самостійно:

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

>>> sorted([w for w in set(text7) if '-' in w and 'index' in w])

>>> sorted([wd for wd in set(text3) if wd.istitle() and len(wd) > 10])

>>> sorted([w for w in set(sent7) if not w.islower()])

>>> sorted([t for t in set(text2) if 'cie' in t or 'cei' in t])

2.3. Обробка кожного елемента:

Розглянемо наступні приклади:

>>> [len(w) for w in text1]

[1, 4, 4, 2, 6, 8, 4, 1, 9, 1, 1, 8, 2, 1, 4, 11, 5, 2, 1, 7, 6, 1, 3, 4, 5, 2, ...]

>>> [w.upper() for w in text1]

['[', 'MOBY', 'DICK', 'BY', 'HERMAN', 'MELVILLE', '1851', ']', 'ETYMOLOGY', '.', ...]

>>>

В даних прикладах застосовані наступні вирази: [f(w) for ...] or [w.f() for ...], де  f  це функція, яка або визначає довжину слова або перетворює малі літери на великі. В кожному з цих прикладів здійснюється обробка кожного елемента списку. Змінній W послідовно присвоююся значення слів з тексту і над цією змінною виконуються передбачені програмою дії.

Такий запис [f(w) for ...] називається "list comprehension" (включення списків або спискові висловлювання) і є важливим для написання та розуміння програм на Python.

Застосуємо включення списків для підрахунку слів в тексті:

>>> len(text1)

260819

>>> len(set(text1))

19317

>>> len(set([word.lower() for word in text1]))

17231

>>>

В даному прикладі ми уникнули подвійного підрахунку слів з великої літери (This and this), що зменшило кількість приблизно на 2000 слів. Подібним способом можна уникнути підрахунку розділових знаків та чисел.

>>> len(set([word.lower() for word in text1 if word.isalpha()]))

16948

>>>

3. Умовна інструкція

Умовна інструкція (інструкція розгалуження) — це розвилка на шляху виконання програми. Програма може піти по одному шляху, а може і по іншому. Шлях вибирається в залежності від значення змінних в момент перевірки умови.

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

>>> x=2

>>> y=5

>>> if x>y:   # Галуження залежно від умови x>y

print x     # Надрукуємо x якщо умова істинне

else:

print y      # Надрукуємо у якщо умова помилкова

 

5

>>>

Ця програма перевіряє, яке з двох введених чисел більше (x>y). Якщо ця умова істинна, то друкується значення x, інакше значення у. Таким чином, дана програма надрукує найбільше з двох чисел.

У загальному випадку синтаксис інструкції галуження такий:

    if умова:

       інструкція11

       ...

       інструкція1n

    else:

       інструкція21

       ...

       инструкция2n

Працює інструкція галуження так. Спочатку перевіряється умова. Якщо вона істинне, то виконується та послідовність інструкцій, яка знаходиться між ключовими словами if і else (називатимемо цю послідовність інструкцій if-блоком). Якщо ж умова помилкова, то замість цього блоку інструкцій виконується та послідовність, яка слідує після ключового слова else (else-блок). Після завершення виконання if-блоку або else-блоку, тобто незалежно від умови, починають виконуватися інструкції, наступні після else-блоку (у розглянутому прикладі це остання інструкція print).

3.1. Структура умовної інструкції

Як Пітон визначає, де закінчується else-блок і починаються ті інструкції, які будуть виконані незалежно від умови, що перевіряється, тобто в якому місці шляхи виконання зливаються?

Це визначається за величиною відступу: перед всіма інструкціями в if-блоці і else-блоці слід поставити один або кілька пропусків, виділяючи за допомогою зсуву вправо блок від решти програми, причому число пропусків перед всіма інструкціями в блоці повинне бути однаковим. Перша ж інструкція після else-блоку повинна починатися з тієї ж позиції, що і ключові слова if і else.

І в жодному випадку не слід забувати про двокрапки після інструкцій if і else.

3.2 Умови

У простому випадку умови мають наступний вигляд:

вираз1 оператор вираз2

де вираз1 і вираз2 – деякі арифметичні вирази (змінні, арифметичні оператори, виклики функцій тощо), а оператор може бути наступним оператором відношення:

< менше

> більше

<= менше або рівно

>= більше або рівно

== рівно

!= нерівно

Наприклад, умова x<=2**(0.5) означає "значення змінної x не менше кореня з 2", а умова 2*x!=y означає "подвоєне значення змінної x не рівно значенню змінної у".

Увага: оператор == (два знаки рівно) — це перевірка на рівність двох виразів, а оператор = (один знак рівно) — це привласнення змінній нового значення і використовувати його в умові інструкції if не можна.

3.3. Неповна інструкція галуження

У інструкції галуження може бути відсутнім ключове слово else з подальшим else-блоком. В наступній програмі ми створили змінну word, яка містить значення ‘cat’ типу стрічка. If- оператор перевіряє умову чи довжина слова <5, чи ні. Якщо умова виразу справджується, то виконується тіло if оператора і виконується оператор print .

>>> word='cat'

>>> if len(word)<5:

print "word lenght is less than 5"

 

word lenght is less than 5

>>>

Якщо змінити умови виразу (довжина слова більша або рівна 5), вираз не справджується і оператор print не виконується.

>>> if len(word)>=5:

print "word lenght is greater than or equal to 5"

 

>>>

При написанні програм можна поєднувати оператори if та for. В наступному прикладі в циклі обробляються всі елементи списку і друкуються тільки ті, які мають останню літеру l:

>>> sent1 = ['Call', 'me', 'Ishmael', '.']

>>> for xyzzy in sent1:

...     if xyzzy.endswith('l'):

...         print xyzzy

...

Call

Ishmael

>>>

3.4. Інструкція множинного галуження

Іноді потрібно вибирати не з двох альтернативних шляхів виконання, а з кількох, наприклад, в залежності від того, чи є певна величина додатною, від’ємною чи рівною нулю слід виконати одну з трьох дій. В цьому випадку можна використовувати інструкцію множинного галуження. Приклад використання інструкції множинного галуження:

>>> if len(word)>=5:

print "word lenght is greater than or equal to 5"

else:

print "word lenght is less than 5"

 

word lenght is less than 5

>>>

У множинному галуженні повинна бути одна інструкція if з подальшим блоком, одна або кілька інструкцій elif з подальшими блоками і, можливо, інструкція else з подальшим блоком. Всі умови перевіряються одна за іншою і буде виконаний блок інструкцій, який слідує за умовою, значення якої буде істинне.

Наступний приклад містить складнішу комбінацію з операторів  If, else, elif.

>>> for token in sent1:

...     if token.islower():

...         print token, 'is a lowercase word'

...     elif token.istitle():

...         print token, 'is a titlecase word'

...     else:

...         print token, 'is punctuation'

...

Call is a titlecase word

me is a lowercase word

Ishmael is a titlecase word

. is punctuation

>>>

Якщо істинними виявляться кілька умов, то виконається тільки той блок інструкцій, який слідує після першого з цих умов (а решта умов навіть не перевірятиметься).

>>> animals=['cat','dog']

>>> if 'cat' in animals:

print 1

elif 'dog' in animals:

print 2

 

1

>>>

У випадку, коли if. вираз твердження задовольняється, elif вираз не виконується і програма ніколи не виведе на екран 2. elif вираз надає більше інформації ніж if вираз. Якщо elif вираз справджується то це означає, що не тільки одна умова справджується але і означає, що умова if виразу не справдилася.

Якщо ж всі умови будуть помилкові, то виконається else-блок, якщо він є.

Якщо залишити частину умов if твердження пустою, то не пуста стрічка або список буде оброблятися як true  а пуста стрічка чи список, як false.

>>> mixed=['cat','',['dog'],[]]

>>> for element in mixed:

if element:

 print element

 

cat

['dog']

>>>

3.5. Вкладені умовні інструкції

Усередині блоку умовної інструкції можуть знаходиться будь-які інші інструкції, у тому числі і умовна інструкція. Такі інструкції називаються вкладеними. Синтаксис вкладеної умовної інструкції такий:

    if условие1:

       ...

       if условие2:

          ...

       else:

          ...

       ...

    else:

       ...

Замість трикрапок можна писати довільні інструкції. Зверніть увагу на розміри відступів перед інструкціями. Блок вкладеної умовної інструкції відділяється великим відступом. Рівень вкладеності умовних інструкцій може бути довільним, тобто всередині однієї умовної інструкції може бути друга, а всередині неї — ще одна і т.д.

4. Цикл з умовою

У циклі з умовою while цикл виконується, поки істинною є його умова. Тому цей цикл також іноді називають циклом "поки". Часто цикл while використовується, коли неможливо заздалегідь передбачити, скільки разів необхідно виконати тіло циклу. У повсякденному житті цикл while можна зустріти в алгоритмах, ніби "Поки в межах видимості є машини, стояти на місці" або "Поки в ящику є деталі, дістати деталь з ящика".

У наступній програмі цикл while використовується подібно до циклу for для виводу на екран всіх чисел від 1 до 10:

>>> i=1

>>> while i<=10:

print i,

i=i+1

 

1 2 3 4 5 6 7 8 9 10

>>>

У цій програмі змінній i привласнюється значення 1. Потім починається цикл (ключове слово while) з умовою i<=10, що перевіряється. Тіло циклу містить дві інструкції: вивід на екран значення змінної i і збільшення значення змінної i на 1.

При виконанні цього циклу перевіряється умова i<=10. Оскільки значення i спочатку рівне 1, та умова вірна і виконується тіло циклу: на екран виводиться значення змінної i, тобто 1 і змінною i привласнюється значення i+1, тобто 2. Знову перевіряється умова, оскільки воно вірне, то виконується блок циклу: на екран виводиться число 2 і змінною i привласнюється значення 3. Знову перевіряється значення циклу, і так далі до тих пір, поки умова, що перевіряється, істинна.

Як тільки умова, що перевіряється, стане помилкова (це відбудеться, коли змінна i стане рівна 11), цикл завершить роботу і управління буде передано наступній інструкції після блоку циклу. Тому після завершення циклу змінна i матиме значення 11.

У загальному вигляді синтаксис циклу з умовою в мові Пітон такий:

    while умова:

        інструкція 1

        інструкція 2

        ...

        інструкція n

У кожній інструкції while повинні бути присутніми:

  1.  Умова, що визначає, чи виконуватиметься тіло циклу. Ця умова записується після слова while і може бути довільним арифметичним виразом, в якому повинен бути хоч би один з операторів ==, !=, <, >, <=, >= і можуть використовуватися логічні оператори and, or, not. Після умови ставиться двокрапка.
  2.  Тіло циклу, що складається з однієї або декількох інструкцій, записаних з відступом однакової величини.
  3.  Інструкції, що змінюють значення змінних, що входять в умову, що перевіряється. У розглянутому прикладі це інструкція i=i+1. Якби цієї інструкції не було, те значення змінної i не мінялося б і умова, що перевірялася, завжди була б істинною, що привело б до нескінченного циклу. Для переривання роботи програми, що потрапила в нескінченний цикл, використовується комбінація клавіш Ctrl+C.

4.2. Ітерації і If твердження.

Нехай маємо стрічку і необхідно написати програму, яка виведе на екран всі слова, які мають закінчення «ow». Програма буде складатися з наступних частин. Спочатку розділимо стрічку на список слів.

>>> sentence='how now brown cow'

>>> words=sentence.split()

>>> words

['how', 'now', 'brown', 'cow']

>>>

Тепер потрібно послідовно перебрати всі слова у списку . Напишемо такий цикл , за допомогою якого виводимо на екран всі слова .

>>> for word in words:

print word

 

how

now

brown

cow

>>>

Далі треба вивести на екран тільки необхідні нам слова із закінченням «ow». Попередньо можна перевірити, які саме слова необхідно вивести на екран.

>>> 'how'.endswith('ow')

True

>>> 'brown'.endswith('ow')

False

>>>

Тепер все готове для написання If твердження у For  циклі.

>>> sentence='how now brown cow'

>>> words=sentence.split()

>>> for word in words:

if word.endswith('ow'):

 print word

 

how

now

cow

>>>

На завершення розглянемо наступний приклад:

>>> tricky = sorted([w for w in set(text2) if 'cie' in w or 'cei' in w])

>>> for word in tricky:

...     print word,

ancient ceiling conceit conceited conceive conscience

conscientious conscientiously deceitful deceive ...

>>>

Спочатку був створений список куди увійшли слова з буквосполученнями «cie» та «cei». Елементи цього списку оброблялися в циклі і роздруковувалися. Зауважимо, що кома в кінці оператора print вказує на те щоб результати виводилися в стрічку.

Модуль random

В Пітоні існує вбудований модуль, який дозволяє генерувати псевдовипадкові числа. З математичної точки зору вони не є істинно випадковими, але для наших цілей цілком підійдуть.

Модуль random містить функцію random, яка повертає дійсне число в діапазоні від 0.0 до 1.0. Кожного разу при виклику функції random отримуємо число з довгого ряду. Щоб подивитися, як вона працює, запустимо наступну програму:

>>> import random

>>> for i in range(10):

x = random.random()

print x,

0.229251402651 0.682351257761 0.294930909369 0.373334992539 0.441086385331 0.369412011226 0.210202876242 0.646238551283 0.662405582996 0.69126828748

>>>

Щоб отримати випадкове число між 0.0 і верхньою межею high, просто помножте x на high.

>>> V=5

>>> for i in range(10):

x = random.random()

print V*x,

 

4.69129913244 0.208588299515 0.362363052128 0.400794515189 1.85098407649 3.33756302701 4.63164988677 4.01174854489 2.56470115549 3.65997263093

>>>

Додаток А

Сьогодні ми вивчили:

  •  Використання операторів if та for.
  •  Побудову контрольних структур та умовних виразів.

Функції для роботи зі списками

s.lower()

Перетворення всіх символів в s на малі

s.upper()

Перетворення всіх символів в s на великі

s.title()

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

Порядок виконання роботи

1. Ознайомитися з теоретичними відомостями.

2. Виконати приклади, які використовуються в теоретичних відомостях.

3. Виконати наступні вправи.

  1.  Створіть змінну sentence і присвойте їй значення ‘she sells sea shells by the sea shore’  та напишіть фрагмент програми для виведення на екран всіх слів які починаються з ‘sh’.
  2.  Створіть змінну sentence і присвойте їй значення ‘she sells sea shells by the sea shore’  та напишіть фрагмент програми для виведення на екран всіх сліва, довжина яких більша ніж 4 символи.
  3.  Створіть змінну sentence і присвойте їй значення ‘she sells sea shells by the sea shore’  та напишіть фрагмент програми, яка генерує нову стрічку додаючи ‘like’ перед кожним зі слів , яке починається з ‘se’.
  4.  Напишіть програму, яка видаляє всі голосні зі стрічки, яка відповідає імені, по батькові та прізвищу студента. Програма повинна здійснювати наступну послідовність дій: створення початкової стрічки; створення стрічки, у якій буде зберігатися результат; for цикл для обробки стрічки символ за символом і запису неголосних символів в результуючу стрічку.
  5.  Пуста стрічка і пустий список в частині умов if виразу призводить до помилки. Напишіть програму для демонстрації таких випадків при використанні if тверджень.
  6.  Перегляньте результати виконання умовних виразів: ’row’ in ’brown’ та ’row’ in [’ brown’, ’cow’]. Напишіть програму для перевірки наявності в стрічці sent=’ ’colorless green ideas sleep furiously’ окремих слів та підстрічок.
  7.  Виконати наступні приклади і пояснити чому отримані різні результати (різні значення змінних)

sorted(set([w.lower() for w in text1]))

sorted([w.lower() for w in set(text1)])

  1.  Виконати наступні приклади і пояснити різницю між ними

w.isupper()  

not w.islower()

  1.  Знайдіть в тексті № 5 всі слова довжина яких дорівнює 4 і побудуйте для них частотний розподіл.
  2.  Використовуючи оператори if та for виведіть на екран всі слова з тексту № 6 які написані з великої літери.
  3.  Напишіть вираз для знаходження в тексті №6 всіх слів які відповідають наступним вимогам: закінчуються на ize; містять літеру z; містять послідовність літер pt; написані з великої літери . Результат представити, як список слів.
  4.  Використайте вираз sum([len(w) for w in text1]) для знаходження середньої довжини слів в тексті.
  5.  Перевірте виконання виразу set(sent3) < set(text1). Змініть аргументи функції. Результати поясніть.

14-18. Написати програму використовуючи list comprehension та ту саму програму не використовуючи list comprehension. Програма повинна виконувати:

  1.  Знайти в тексті1 всі слова які складаються з 5 літер, і починаються з букви "t".
  2.  Знайти в тексті 2 всі слова які складаються з більше ніж 5 літер, і менше ніж з 10 літер починаються з букви "t".
  3.  Знайти в тексті 3 всі слова які починаються з великої літери і складаються з 7 літер.
  4.  Знайти в тексті 4 всі слова які починаються з літери яка відповідає першій літері імені студента і завершуються літерою яка відповідає останній літері імені студента.
  5.  Знайти в тексті 5 всі слова які складаються виключно з літер та, і містять буквосполучення "to" .

19-24. В стрічці "Love me tender, love me sweet, never let me go." Написати програму для знаходження:

  1.  Слова з першої літери слова, з якого починається речення.
  2.  Розділові знаки.
  3.  Кількості вживання слова "love".
  4.  Слова, що мають довжину більшу за 4 букви.
  5.  Кількості вживання слова "me".
  6.  Слів які мають довжину більше ніж 3 букви починаються на "l" та закінчуються на "e".

4. Підготувати і оформити звіт.

Варіанти завдань

Варіант

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Номери завдань

1

2

3

1

2

3

1

2

3

1

2

3

1

2

3

4

6

5

5

4

6

4

6

5

5

4

6

4

6

5

8

7

8

8

7

7

8

8

7

7

8

8

7

7

8

9

13

9

13

9

13

9

13

9

13

9

13

13

9

9

11

12

11

12

11

12

11

12

11

12

11

12

11

12

12

14

15

16

17

18

19

20

21

22

23

24

14

15

16

17

Варіант

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Номери завдань

1

2

3

1

2

3

1

2

3

1

2

3

1

2

3

4

6

5

5

4

6

4

6

5

5

4

6

5

4

6

7

8

8

7

7

8

8

7

7

8

8

7

7

8

7

9

13

9

13

9

13

9

13

9

13

9

13

13

9

13

11

12

11

12

11

12

11

12

11

12

11

12

11

12

11

15

16

17

18

19

20

21

22

23

24

14

15

16

14

22

Зміст звіту

  1.  Титульний аркуш.
  2.  Мета роботи.
  3.  Короткі теоретичні відомості.
  4.  Тексти програм на мові Python.
  5.  Висновок.

Література

  1.  Steven Bird, Ewan Klein, Edward Loper Introduction to Natural Language Processing. 2001-2007 University of Pennsylvania.
  2.  Г. Россум, Ф.Л.Дж. Дрейк, Д.С. Откидач, М. Задка, М. Левис, С.Монтаро, Э.С.Реймонд, А.М.Кучлинг, М.-А.Лембург, К.-П.Йи, Д.Ксиллаг, Х.Г. Петрилли, Б.А.Варсав, Дж.К.Ахлстром, Дж.Рокинд, Н.Шеменон, С.Мулендер. Язык программирования Python./ 2001 – 452c.
  3.  Сузи Р. А. Язык программирования Python.- 206с.
  4.  David Mertz Text Processing in Python Addison WesleyBiber, 2003 - 544.


 

А также другие работы, которые могут Вас заинтересовать

77605. Лефортово в 20 веке 1.71 MB
  История столичного района Лефортово (бывший Калининский район г. Москвы) в высшей степени поучительна. Как в фокусе здесь сходятся равнодействующие всех влияний, складывающих национальный облик Россиянина. Как зеркало отражает она развитие страны, внешнее и внутреннее изменение города.
77608. Асноўныя асаблівасці беларускай мовы 69.5 KB
  Асноўныя асаблівасці беларускай мовы склаліся не пазней ХІІІ ст. Пісьмовая форма пачала фарміравацца пазней – прыкладна ў ХІV ст. на аснове жывой народнай гаворкі і агульнаўсходнеславянскіх моўных традыцый. Захавалася нямнога звестак пра старажытныя дапаможнікі для вывучэння мовы.
77609. Досвід роботи Володимир-Волинського міськрайонного центру зайнятості по забезпеченню соціального захисту незайнятої молоді 179.1 KB
  Молодь - одна з найвразливіших верств населення України. Покликання молоді є формування майбутнього української держави, ії розбудови, зміцнення, виведення на передові економічні , наукові, культурні рубежі.
77610. ОСОБЛИВОСТІ СПРИЯННЯ ПРАЦЕВЛАШТУВАННЮ МОЛОДІ В СУЧАСНИХ УМОВАХ РИНКУ ПРАЦІ 283.5 KB
  Завдяки високому інтелектуальному потенціалу мобільності та гнучкості молоді люди мають можливість впливати на суспільний прогрес визначаючи майбутнє суспільства держави та світового співтовариства.
77611. Новая экономическая политика 57.25 KB
  Споры о НЭПе продолжаются и сейчас ведутся например дискуссии на тему был ли отказ от НЭПа обусловлен общей логикой событий или это было нарушение логики поступательного развития. Цель моего исследования состоит в рассмотрении сущности и значения НЭПа.
77612. Супутникові лінії зв’язку 2.45 MB
  Передача і прийом інформації від джерела до користувача називається зв’язком. При передачі повідомлення перетворюються в передавач і сигнали, що передаються по лінії зв’язку. Сигнали, які є носіями повідомлення приймаються приймачем, в якому відбувається їх перетворення у повідомлення.