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 та як їх уникати.


 

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

83922. Плечевое сплетение. Техника анестезии плечевого сплетения 54.05 KB
  Техника анестезии плечевого сплетения. Короткие ветви отходят в различных местах сплетения в надключичной его части и снабжают отчасти мышцы шеи а также мышцы пояса верхней конечности за исключением m. musculocutneus мышечнокожный нерв отходит от латерального пучка плечевого сплетения из C5 С7 прободает m. cutneus brchii medilis происходит из медиального пучка сплетения из С8 Th1 идет по подмышечной ямке медиально от .
83923. Хирургическая анатомия подмышечной области. Сосудисто-нервный пучок. Коллатеральное кровоснабжение в области надплечья. Подмышечная лимфодиссекция 56.11 KB
  При отведенной конечности область имеет форму ямки foss xillris. Собственная фасция fsci xillris в центре области тонкая в ней заметны узкие щели через которые проходят мелкие крове носные и лимфатические сосуды и нервы к коже. Подфасциальные образования Клетчаточное пространство подмышечной ямки расположено под fsci xillris. По форме это четырехгранная пирамида основанием которой является fsci xillris а верхушка лежит у середины ключицы между ней и I ребром.
83924. Контроль качества продукции в кулинарной промышленности 27.39 KB
  Перед проведением бракеража продукции общественного питания члены бракеражной комиссии или работник лаборатории должны ознакомиться с меню рецептурой блюд и изделий калькуляционными карточками или прейскурантом технологией приготовления блюд изделий качество которых оценивается а также с показателями их качества установленными нормативными документами. Бракеражная комиссия в своей деятельности руководствуется Положением о бракераже пищи в предприятиях общественного питания нормативными документами сборниками рецептур блюд и...
83925. Требования к транспортированию, приему и хранению сырья, пищевых продуктов 26.45 KB
  Мороженое мясо хранят на стеллажах или подтоварниках штабелями. Субпродукты хранят в таре поставщика на стеллажах или подтоварниках. Птицу мороженую или охлажденную хранят в таре поставщика на стеллажах или подтоварниках укладывая в штабеля; для лучшей циркуляции воздуха между ящиками коробами рекомендуется прокладывать рейки. Рыбу мороженую филе рыбное хранят на стеллажах или подтоварниках в таре поставщика.
83926. Требования к обработке сырья и производству продукции 29.67 KB
  При приготовлении блюд кулинарных и кондитерских изделий необходимо строго соблюдать поточность технологических процессов. Готовность изделий из мяса и птицы определяется выделением бесцветного сока в месте прокола и серым цветом на разрезе продукта а также температурой в толще продукта. Для натуральных рубленых изделий не ниже 85 С для изделий из котлетной массы не ниже 90 С. Готовность изделий из рыбного фарша и рыбы определяется образованием поджаристой корочки и легким отделением мяса от кости в порционных кусках.
83927. Требования к раздаче блюд и отпуску полуфабрикатов и кулинарных изделий 25.48 KB
  Горячие блюда супы соусы напитки при раздаче должны иметь температуру не ниже 75 С вторые блюда и гарниры не ниже 65 С холодные супы напитки не выше 14 С. Готовые первые и вторые блюда могут находиться на мармите или горячей плите не более 23 ч с момента изготовления. Салаты винегреты гастрономические продукты другие холодные блюда и напитки должны выставляться в порционированном виде в охлаждаемый прилавоквитрину и реализовываться в течение одного часа. При составлении меню 23разовогопитания для организованных коллективов...
83928. Информационная система по учету затрат на приобретение материалов подотчетным лицом в розничной торговле 3.69 MB
  Архитектура информационных систем это концепция описывающая модель структуру выполняемые функции и взаимосвязь компонентов как отдельно взятой информационной системы так и ИТ-инфраструктуры в целом. А также углубление расширение навыков по построению архитектуры информационной системы закрепление знаний...
83929. Разработка приложения баз данных для автоматизации операции учета в отделе кадров 66.41 KB
  Для решения подобных проблем применяются автоматизированные базы данных. За последние несколько лет вырос уровень потребительских качеств систем управления базами данных СУБД: разнообразие поддерживаемых функций удобный для пользователя интерфейс сопряжение с программными продуктами в частности...