Программирование (осень 2011)
Задания
К 14 сентября 2011 (последний срок сдачи 28 сентября):
- Научиться работать с Python и писать простые программы.
- Пользователем задаётся строка. Перевести все маленькие буквы (нижнего регистра) в соответствующие большие буквы (верхнего регистра), а большие в маленькие. Вывести результирующую строку.
- Решите третью, девятую и двадцатую задачи с Project Euler. Там можно зарегистрироваться и проверить ответ.
К 28 сентября 2011 (последний срок сдачи 5 октября):
- Задан словарь d и именами и оценками, например d = {'Kolya': 2, 'Vasya': 5}. Вывести имя ученика с максимальной оценкой (если таких много, то любого одного).
- Напишите функцию, которая принимает в качестве аргумента словарь, а возвращает "перевёрнутый" словарь. То есть, меняет местами ключ и значение. В случае неоднозначности можно выбрать любое значение. Таким образом, словарь {'Kolya': 2, 'Vasya': 5, 'Petya': 5} станет, например, словарём {2: 'Kolya', 5: 'Petya'}.
- Решите сорок пятую, двадцать восьмую и восемнадцатую задачи с Project Euler. Там можно зарегистрироваться и проверить ответ.
21 сентября занятий не будет (только у моей подргуппы)! Просьба распространить информацию одноподгруппникам!
Темы докладов:
- 19 октября: Котельников - numpy, scipy +
- 19 октября: Шкуратов - matplotlib +
- 02 октября: Котельников - scipy +
- 02 октября: Безинова - re +
- 02 октября: Искандерова - PIL +
- 09 ноября: Квашина - pygame, PyOpenGL +
- 09 ноября: Тихонова - PyQt, PyGTK +
- 16 ноября: Дудырев - sqllite, databases with Python +
- 16 ноября: Николаев - urllib, httplib, socket +
- 25 ноября: Севостьянов - django +
К 5 октября 2011 (последний срок сдачи 19 октября):
- Решите шестьдесят судьмую задачу с Project Euler. Там можно зарегистрироваться и проверить ответ.
- В файле input.txt задана некоторая таблица в формате CSV. Необходимо отсортировать данные, содержащиеся в ней, по первой колонке и вывести в файл output.txt.
К 19 октября 2011 (последний срок сдачи 2 ноября):
- Реализовать функцию binary_search(ls, x), возвращающую позицию найденного элемента или None, если такого элемента нет в списке.
- Реализовать функцию quick_sort(ls).
- Реализовать функцию merge_sort(ls).
26 октября занятий не будет, так как у вас медосмотр.
К 26 октября 2011 (последний срок сдачи 9 ноября):
- В первой строке файла задано число N, в последующих N строках задано по N чисел. Таким образом, во входном файле содержится квадратная матрица N*N (и её размер первой строкой). Необходимо вычислить и вывести на экран определитель матрицы. Пример ввода:
3 1 0 0 0 1 0 0 0 1
- Реализовать структуру данных "хеш-таблица", функции insert(key, value), find(key), erase(key).
- Реализовать класс Node бинарного дерева с выделенным корнем.
К 16 ноября 2011 (последний срок сдачи 23 ноября):
- К реализованному классу Node добавить функции dfs() и bfs(), печатающие дерево соответствующим обходом в глубину или в ширину (+ вершина печатается всегда раньше своих детей).
- Реализовать класс Search_Tree_Node, аналогичный классу Node, конструирующийся дерево поиска для переданного (в конструктор) списка. Реализовать в этом классе метод find(x), возвращающий True/False в зависимости от наличия элемента x в данном дереве. Перед тем, как делать это задание, почитайте про наследование в Python (мы поговорим об этом на занятии 2-ого ноября).
- Реализовать класс queue с методами pop_left(), push_right() и empty(). Его следует реализовывать на основе списка (циклического).
16 ноября 2011 состоится письменная контрольная на 40 минут на 2-ой паре на листочках. По всему изученному материалу (синтаксис Python, структуры данных, алгоритмы, ООП).
К 16 ноября 2011 (последний срок сдачи 23 ноября):
- Написать функцию проверки строки на соответствие телефонному номеру в России (с кодом страны и города, т.е. как в сотовых телефонах). Учтите разные (все возможные) форматы написания телефонов.
- Написать функцию, создающую миниатюры для всех изображений (png, gif, jpg) в текущей папке (где запущен скрипт), размером 100х100 пикселей. Например, был большой pic.jpg, появится pic_small.jpg размером 100х100. Используйте библиотеки os (для получения списка файлов) и PIL (для работы с изображениями).
- Пройти http://www.pythonchallenge.com/ до 4-ого уровня включительно (и показать на занятии код, как это было сделано).
К 30 ноября 2011 (последний срок сдачи 30 ноября):
- Написать браузер со строкой ввода URL, кнопкой "Перейти" и полем, где показывается содержимое страницы (просто в текстовом виде, без визуализации HTML разметки). В качестве библиотеки для окон можно использовать Tkinter, PyGTK, PyQt.
К 7 декабря 2011:
- Добавить в браузер сохранение истории посещённых страниц (в sqlite3, файл на диске) и отображение этой истории в интерфейсе. При последующем открытии программы можно перейти на ранее посещённые страницы.
- При открытии страницы изменять заголовок окна в соответствии с содержимом тега <title>...</title> открытой страницы.
К 14 декабря 2011:
- Добавить в браузер возможность перехода по ссылкам <a href="http://example.com">go there</a>
- ...
21 декабря 2011 (последнее занятие) состоится письменная контрольная на 1.5 часа на 2-ой паре на листочках. По всему изученному материалу.
