4712

Вивчення основ структурного програмування мовою Python

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

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

Мета робота Вивчення основ програмування на мові Python. Вивчення основ структурного програмування мовою Python. Повторення та закріплення знань отриманих при виконанні попередніх лабораторних робіт. Покращення загальних нав...

Украинкский

2012-11-25

72 KB

21 чел.

Мета робота

  •   Вивчення основ програмування на мові Python.
  •  Вивчення основ структурного програмування мовою Python.
  •  Повторення та закріплення знань отриманих при виконанні попередніх лабораторних робіт.
  •  Покращення загальних навичок у програмуванні.

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

 Присвоювання – найпростіше поняття програмування, але навіть і йому властиві певні тонкощі.

 За допомогою операції присвоєння відбувається копіювання значення виразу іншій змінній, хоча насправді, значення структурованого об’єкту, наприклад такого, як список, це є посилання на цей об’єкт. В наступному прикладі (рядок програми #1) відбувається присвоєння посилання на значення змінної foo новій змінній bar. Якщо відбуваються зміни в foo (рядок програми #2) то ці зміни також торкаються і bar.

 Python підтримує два способи порівняння. Оператор is перевіряє об’єкти на ідентичність. Створивши список з декількох копій одного і того самого об’єкту не складно переконатися, що елементи цього списку не тільки ідентичні, згідно ==, але і є одним і тим самим об’єктом.

 Серед послідовностей, в попередніх прикладах, використовувалися наступні: стрічки, списки та кортежі. Змінна, тип якої – кортеж, створюється за допомогою ком (#1) і переважно обмежується дужками. В попередніх лабораторних роботах кортежі використовувалися для представлення пар значень (елементів послідовності з двох членів). Зазвичай, кортежі можуть містити будь-яку кількість елементів та членів.

 Кортежі створюються за допомогою ком (оператор - кома). Для створення кортежу, який містить єдиний елемент 'snark'  , кома ставиться безпосередньо після цього елементу 'snark',.  Пустий кортеж створюється за допомогою пустих дужок (t=()).

Способи ітерування елементів послідовностей    Таблиця 1:

Вираз Python

Пояснення

for item in s

Проітерувати елементи s

for item in sorted(s)

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

for item in set(s)

Проітерувати унікальні елементи s

for item in reversed(s)

Проітерувати зворотньо впорядковані елементи s

for item in set(s).difference(t)

Проітерувати елементи s, які не входять в t

for item in random.shuffle(s)

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


Індивідуальне завдання варіант 9:

  1.  Знайти в Python's help додаткову інформацію про послідовності. В інтерпретаторі, набрати по черзі help(str), help(list), та help(tuple). На екрані буде відображено повний список функцій властивих кожному з типів. Деякі функції мають спеціальні імена з подвійними підкреслюваннями. Кожній такій функції відповідає і інший запис показаний  в документації. Наприклад x.__getitem__(y) відповідає x[y].

class str(basestring)

|  str(object) -> string

|  Return a nice string representation of the object.

|  If the argument is a string, the return value is the same object.

|  Method resolution order:

|      str

|      basestring

|      object

|  Methods defined here:

|  __add__(...)

|      x.__add__(y) <==> x+y

class list(object)

|  list() -> new empty list

|  list(iterable) -> new list initialized from iterable's items

|  Methods defined here:

|  __add__(...)

|      x.__add__(y) <==> x+y

class tuple(object)

|  tuple() -> empty tuple

|  tuple(iterable) -> tuple initialized from iterable's items

|  

|  If the argument is a tuple, the return value is the same object.

|  

|  Methods defined here:

|  

|  __add__(...)

|      x.__add__(y) <==> x+y

  1.  Знайти три операції, які можна здійснювати і зі списками та із кортежами. Знайти три операції, які не можна здійснювати над кортежами. Знайдіть коли використання списку замість кортежу приводить до Python помилки.

Спільні:

|  __add__(...)

|      x.__add__(y) <==> x+y

|  __contains__(...)

|      x.__contains__(y) <==> y in x

|  __eq__(...)

|      x.__eq__(y) <==> x==y 

Не можна з кортежами:

|  __imul__(...)

|      x.__imul__(y) <==> x*=y

|  __delitem__(...)

|      x.__delitem__(y) <==> del x[y]

|  __iadd__(...)

|      x.__iadd__(y) <==> x+=y

  1.  Яким чином можна створити кортеж з одного елемента. Продемонструвати два різні способи.

>>> words = ['I']

>>> tags = ['noun']

>>> zip(words, tags)

[('I', 'noun')]

>>> list(enumerate(words))

[(0, 'I')]

>>> pair = (6, 'turned')

>>> pair

(6, 'turned')

  1.  Створити список words = ['is', 'NLP', 'fun', '?']. Використовуючи операції присвоювання подібні до words[1] = words[2] та тимчасову змінну  tmp перетворити цей список в список ['NLP', 'is', 'fun', '!']. Здійснити аналогічні перетворення використовуючи присвоювання в кортежах.

Список:

>>> words = ['is', 'NLP', 'fun', '?']

>>> tmp = words[0]

>>> words[0] = words[1]

>>> words[1] = tmp

>>> words[3] = '!'

>>> words

['NLP', 'is', 'fun', '!']

Кортежах:

>>> words = [(1,'is'),(2,'NLP'),(3,'fun'),(4,'?')]

>>> tmp = words[0]

>>> words[0] = words[1]

>>> words[1] = tmp

>>> words[3] = '!'

>>> words

[(2, 'NLP'), (1, 'is'), (3, 'fun'), '!']

  1.  Прочитати про вбудовану функцію здійснення порівнянь cmp, набравши help(cmp). Продемонструвати чим поведінка цієї функції відрізняється від поведінки операторів порівняння.

cmp(...)

   cmp(x, y) -> integer

     Return negative if x<y, zero if x==y, positive if x>y.

>>> x = 1

>>> y = 2

>>> cmp(x, y)

-1

>>> x = 0.5

>>> cmp(x, y)

-1

>>> x = "hello"

>>> y = "HELL"

>>> cmp(x,y)

1

  1.  Написати програму для коректного виділення в тексті n-грамів з врахуванням граничних випадків: n = 1, та n = len(sent)?

>>> sent = ['The', 'world', 'got', 'lost', 'in', 'snow']

>>> n = 3

>>> [sent[i:i+n] for i in range(len(sent)-n+1)]

[['The', 'world', 'got'], ['world', 'got', 'lost'], ['got', 'lost', 'in'], ['lost', 'in', 'snow']]

  1.  Використати оператори нерівності для порівняння стрічок, наприклад. 'Monty' < 'Python'. Що станеться, якщо виконати  'Z' < 'a'? Порівняти стрічки,як мають однаковий префікс, наприклад 'Monty' < 'Montague'. Спробувати порівняти структуровані об’єкти ,наприклад. ('Monty', 1) < ('Monty', 2). Чи отримали очікувані результати?

>>> 'Monty' < 'Python'

True

>>> 'Z' < 'a'

True

>>> 'Monty' < 'Montague'

False

>>> ('Monty', 1) < ('Monty', 2)

True

>>> cmp('Z','a')

-1

>>> cmp('Monty','Montague')

1

>>> cmp(('Monty', 1),('Monty', 2))

-1

  1.  Написати програму видалення пробілів на початку і в кінці стрічки та для видалення зайвих пробілів між словами. Використовувати split() та join(). Оформити у вигляді функції. Функція повинна містити повну стрічку документування.

>>> text = " Hello  how are  you? "

>>> def clean_spaces(text):

"""Deletes the first and the last space in text and double space into one space."""

tmp = text.split();

tmp = ' '.join(tmp);

return tmp

>>> clean_spaces(text)

'Hello how are you?'

>>> help(clean_spaces)

Help on function clean_spaces in module __main__:

clean_spaces(text)

   Deletes the first and the last space in text and double space into one space.

  1.  Написати програму видалення пробілів на початку і в кінці стрічки та для видалення зайвих пробілів між словами. Використовувати re.sub() . Оформити у вигляді функції. Функція повинна містити повну стрічку документування

>>> import re

>>> text = " Hello  how are  you? "

>>> def clean_spaces(text):

"""Deletes the first and the last space in text and double space into one space."""

tmp = re.sub("^\s+","",text);

       tmp = re.sub("\s+$","",tmp);

       tmp = re.sub("\s{2}"," ",tmp);

       return tmp

>>> clean_spaces(text)

'Hello how are you?'

  1.  Написати програму сортування слів за їх довжиною. Визначити допоміжну функцію cmp_len, яка буде використовувати функцію  cmp для порівняння довжин слів. Функція повинна містити повну стрічку документування.

>>> def cmp_len(word1,word2):

"""Find out which one is longer."""

return cmp(len(word1),len(word2));

>>> def sort_by_len(input_list):

"""Sort list by length."""

       while cmp_len(input_list[0],input_list[1])==-1:

  for i in range(len(input_list)-1):

     if cmp_len(input_list[i],input_list[i+1])==-1: tmp = input_list[i]; input_list[i]=input_list[i+1];input_list[i+1]=tmp;

   elif cmp_len(input_list[i],input_list[i+1])==1: tmp = input_list[i]; input_list[i]=input_list[i+1];input_list[i+1]=tmp;

   

>>> listout = ['ds','aaa','dddd','dsc']

>>> sort_by_len(listout)

>>> listout

['dddd', 'aaa', 'dsc', 'ds']


Висновок:

В даній лабораторній роботі я дізнався: яким чином писати гарно структуровані, чіткі, сприйнятливі (читабельні) програми, придатні для неодноразового використання, яким чином працюють основні конструкційні блоки, а саме: цикл, функція, присвоювання, які можуть бути пастки при програмуванні на Python та як їх уникати.


 

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

21355. Устройство диалогового отображения данных. Устройство управления синхронизацией 1.26 MB
  УДОД может работать в трех основных режимах: ввод в память микроЭВМ данных с клавиатуры пульта оператора; вывод данных и команд из микроЭВМ на устройства отображения информации и регистр индикации пульта управления; автоматизированный контроль блоков УДОД. Интерфейс воспринимается микроЭВМ как ряд адресуемых регистров. Блок 80513 функционально содержит пять адресуемых регистров: регистр состояния; регистр данных клавиатуры; регистр режима; регистр индикации сигнальной информации; регистр тестирования. В блоке 80103 шесть адресуемых...
21356. Назначение, состав вооружения воинских частей и подразделений РЭБ 587.21 KB
  Имеющиеся на вооружении силы и средства РЭБ не в состоянии оказать воздействие на всю систему управления противника поэтому важно применять их в сочетании с огневым поражением на наиболее важных направлениях в нужные периоды боя операции в нужное время по наиболее важным целям. Умелое применение современных комплексов радиоподавления иногда может дать не меньшие результаты чем удары средствами поражения по элементам АСУ противника. Радиоэлектронная борьба РЭБ – совокупность согласованных по целям задачам месту и времени мероприятий...
21357. НАЗНАЧЕНИЕ, ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ, СОСТАВ АВТОМАТИЗИРОВАННЫХ СТАНЦИЙ ПОМЕХ Р –325У,Р378А,Б 53 KB
  АСП обеспечивает: автоматический поиск и обнаружение источников радиоизлучений ИРИ в пределах частотного диапазона или в заданном участке диапазона; автоматическое или ручное пеленгование обнаруженных ИРИ; отображение значений частоты и пеленга обнаруженных ИРИ на табло УУС устройство управления станцией; определение принадлежности обнаруженных ИРИ к объекту РЭП радиоэлектронного подавления путем анализа оператором значений частот параметров сигналов и пеленгов; запись и хранение в ЗУ запоминающее устройство значений...
21358. Назначение, состав, ТТХ, БВ автоматизированного комплекса радиоразведки и подавления Р330 «МАНДАТ 1.2 MB
  Комплекс Р330 Мандат состоит на вооружении подразделений и частей РЭБ Сухопутных войск и предназначен для радиоразведки и радиоподавления линий радиосвязи противника в тактическом и оперативнотактическом звене управления в диапазоне от 1. Состав комплекса Мандат по количеству и типам применяемых средств зависит от организационноштатной структуры ОШС частей РЭБ решаемых ими задач и может включать: а автоматизированный пункт управления АПУ Р330К в составе двух машин: машина управления; аппаратная связи; б...
21359. Расчет СЭП 14.7 MB
  Рулевое устройство предназначается для удержания судна на заданном курсе, а также для его поворота при изменении направления движения
21360. Структурная схема, назначение составных частей, принцип работы станции в различных режимах 50.55 KB
  АПОА предназначен для обнаружения пеленгования и технического анализа ИРИ. Он обеспечивает: панорамную перестройку панорамного обнаружителя Р381Т15 и одновременно с ним автоматического пеленгатора по частоте во всем рабочем диапазоне частот или на отдельных участках диапазона с одинаковыми полосами обзора до семидесяти девяти; определение численных значений частот ИРИ и пеленгов на них с вводом измеренных значений в УУС; определение характеристик сигналов в ручном режиме с помощью анализатора Р399Т и занесение их при...
21361. Аппаратура АПОА: АФС КАМА-4, широкополосное входное устройство Т-152, панорамный обнаружитель Р-381Т1-5 38.37 KB
  Основными функциями изделия являются автоматический поиск радиоизлучений в установленной полосе обзора определение их средних частот ширины спектра и уровня на входе изделия формирование кодов характеристик излучений для передачи в УУС определение момента настройки РПУ на центральную или максимальную частоту спектра излучения. Логическая обработка кодов уровней при поиске сигналов со скоростью 0125 и 0250МГц cек предусматривает разделение импульсных помех и сигналов определение ширины спектра сигнала определение момента точной...
21362. Аппаратура АПОА: назначение, состав и работа составных частей панорамного обнаружителя Р-381Т1-5 25.35 KB
  РПУ Р381Т1 4 предназначено для использования в автоматизированных комплексах. В РПУ имеется гетеродин для приёма ТЛГ и ОПС сигналов работающий в следующих режимах: в режиме плавной перестройки с пределами изменения частоты 5000 Гц. В режиме фиксированных настроек для приёма передач с ОБП стабилизированный кварцевыми резонаторами на частотах 21315 и 21685 кГц режимы ВБП и НБП. Блок ПБ11 предназначен для преселекции усиления и аттенюации принимаемого ВЧ сигнала а также защиты РПУ от мощного сигнала помехи.
21363. Аппаратура АПОА: приемник контроля Р399А 17.93 KB
  В РПУ имеется гетеродин для приёма ТЛГ и ОПС сигналов работающий в следующих режимах: в режиме плавной перестройки с пределами изменения частоты 5000 Гц относительно средней частоты 215 кГц режим ТЛГ. Предусмотрена коррекция частоты гетеродина. Установка частоты и перестройка в ручном режиме обеспечивается: вручную с помощью клавиатуры УСТАНОВКА ЧАСТОТЫ или ручки НАСТРОЙКА с дискретностью 1 при нажатой кнопке 1 переключателя ШАГ НАСТРОЙКИ и с дискретом 10 Гц при нажатой кнопке 10. Обеспечивается установка частоты по...