Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
24
Добавлен:
09.06.2015
Размер:
38.31 Кб
Скачать

Задания (2 курс 4 семестр ПМ).

Используя язык Python выполнить задания на основе следующих лабораторных работ:

1.На основе лабораторной работы №2. Применить два способа.

1)Использовать рекурсивные определения.

2)Использовать циклы.

2.На основе лабораторной работы №5.

Впервом задании следует применить стандартные функции высшего порядка языка Python. Во втором задании необходимо возвратиться к заданиям из лабораторной работы №2 (не №3 как в тексте задания).

3.На основе лабораторной работы №3.

Выполняется с использованием генератора синтаксических анализаторов TPG на основе синтаксических конструкций для типов данных, определенных при выполнении соответствующих заданий на языке Haskell в предыдущем семестре.

Рекомендуется в результате трансляции базы данных получить список объектов с динамически добавляемыми атрибутами и методом __str__ для представления значений атрибутов в виде строки при печати результатов.

В качестве примера приведем соответствующие определения для первого задания:

#! /usr/bin/env python

# -*- coding: utf-8 -*-

import tpg import types

class Product:

def __init__( self, cons, **attrs ): self.cons = cons

self.attrs = attr

def __str__(self): s = ''

for k in (self.attrs).keys(): s += ' ' + str(self.attrs[k]) return self.cons + s

def printLst(Lst): print '[',

for i in range(len(Lst)): if i < len(Lst) - 1: print Lst[i],', ',

else:

print Lst[i], print ']'

class ProdTrans(tpg.Parser): r"""

separator spaces: '\s+' ; token string: '".*?"' ; token number: '\d+' int ;

START/s -> '\[' (Product/p $ s = [p] $ (',' Product/p $ s.append(p) $)* | $ s = [] $)'\]' ; Product/p -> 'Book'/c string/t string/a $ p = Product(c, tit = t, auth = a) $ |

'VC'/c string/t $ p = Product(c, tit = t) $ |

'CD'/c string/t number/n $ p = Product(c, tit = t, cnt = n) $ ;

"""

prodTrans = ProdTrans()

products = '[Book "tt. t1" "a. a1", VC "tt. t2", CD "tt. t3" 23, Book "tt. t4" "a. a4"]' #products = '[]'

#prodTr = []

prodTr = prodTrans(products) printLst(prodTr)

def bookAuthors(ps):

"""

Функция по списку товаров возвращает список авторов книг

"""

pb = [] for p in ps:

if p.cons == 'Book': pb.append(p.attrs['auth'])

return pb

print bookAuthors(prodTr)

4. На основе лабораторной работы №4.

Выполняется с использованием генератора синтаксических анализаторов TPG на основе синтаксических конструкций для типов данных, определенных при выполнении соответствующих заданий на языке Haskell в предыдущем семестре.

Соседние файлы в папке 4_sem