Kodomo

Пользователь

Вопросы для зачёта

Ещё задачки

Полезные задачи


Обучение Оли:

  1. Калькулятор, print
  2. Функция (тяжко, лучше слово "подпрограмма", ещё лучше перенести на позже), список, цикл, переменная; как пользоваться конструкцией for для разных задач (в обратном порядке, только чётные, ... ?); Задачи: написать функцию, находит в списке максимум; куча почти одинаковых функций (по образу и подобию функции разворота списка) – скажите, что они делают (кажется, это было очень полезно)

  3. sys.argv, работа с файлом (open, read, write); Задача: написать программу, которая получает два имени файла, открывает первый на чтение, заменяет в каждой строке позиции 47-49 на табуляцию и пишет во второй.
  4. Задача: написать программу, которая меняет порядок строк в файле (имена входного и выходного файла в sys.argv)
  5. Поиск информации (сайт, help). Самодокументация к функциям. optparse, shutil.copy, os.path.join. Как пользоваться исключениями в самом простом случае (без объяснения, что такое исключение). str.strip с примером использования. Задача: в пустой директории лежит файл со списком имён; написать программу, которая получает в качестве аргументов этот файл, путь к некоторой другой директории и список возможных расширений; для каждого имени из входного файла программа копирует в текущую директорию все файлы с этим именем и каждым из указанных расширений из заданной в аргументах директории; если скопировать не удалось, сообщает на экран
  6. Задача: написать программу, которая читает PDB, оставляет только те модели, в которых больше заданного числа атомов принадлежат нуклеотидам, пишет результат в PDB; новые конструкции: while, break, True, False; функции has_dna(model), extract_model(file), write_model(model, file); прививаю привычку выделять функции (довольно успешно); самая большая проблема – extract_model; даже после написания проблема понять, почему два вызова подряд возвращают первую и вторую модель; итоговая реплика "так надо было говорить, что for line in file не перебирает каждую строку, а очередную, т.е. не перематывает файл"


Обучение Светы:

  1. Теория: типы (числа, строки, списки, кортежи), функции, слайсы, операция % для строк, range, help, sys.argv, os.path.join, os.listdir, shutil.copy. Задача: из заданной директории скопировать каждый третий файл.


План

  1. Вводные слова. Поиск документации. Простая арифметика. Строки. Списки. // str.join; str.split; str.slice; list.slice; int(str); str(int); str.mul; str.center; help(str); str.replace; str.mod; list.sort; file

  2. Репозиторий. if, for, def. Каркас программы. // range; python-scientific: Vector; urllib2; sys.stdin, sys.stdout; filter(None, ...); optparse; doctest; darcs/git; in, not in;
  3. - (практическое занятие)

  4. Объекты. Классы.
  5. Исключения.
  6. for line in file:
  7. PyMol: скрипты в python, определение своих команд.



Подход

Вспомогательный материал (ссылки на будущие лекции, прикладные сущности, не упомянутые в плане) составляют бОльшую часть лекции.

Подход

Делать один большой совместный проект.

Компромиссный вариант: разбивать участников на маленькие группы. (Скорее всего, так и будет).

Подход

Идти вокруг идеи уровней языка.

Уровень языка – это немного новых конструкций / концепций / идей + много готовых реализаций концепций и идей, которые можно было сделать и на предыдущем уровне.

Уровни:

Trivia

Что я хочу иметь на выходе


Полезные ссылки