Учебная страница курса биоинформатики,
год поступления 2013
Практикум 5. Задания
Результатом этого задания являются два скрипта на языке Python, соответствующие первому и второму заданиям. Скрипты должны быть положены в папку зачетных заданий до 23:59 дня накануне следующего занятия.
Внимание! Имена скрипта должны быть в том же формате, что и названия протоколов. Поскольку от Вас требуется два файла, в конце имени (до расширения!) после знака подчеркивания проставляйте номер (scrNN, где scr - сокращение от английского слова script, а NN - двухзначный порядковый номер скрипта). Например, Dibrova_pr5_scr01.py и Dibrova_pr5_scr02.py.
Не забывайте смотреть подсказки к заданию и подсказки по python, и не стесняйтесь спрашивать любого из преподавателей, если что-то не получается!
Ошибайтесь и получайте бонусные баллы! Как? Посмотрите необязательное задание №4 уже сейчас!
Обязательные задания
Подготовка директорий
Создайте директорию нового блока (block2) в своей директории первого семестра (term1).
Создайте рабочую директорию этого практикума (pr5) в директории второго блока (block2).
Создайте директорию для зачетных заданий второго блока (credits) в директории второго блока.
Финальные версии скриптов, готовые к проверке, должны находиться в директории зачетных заданий (term1/block2/credits) в срок. Файл протокола с выполненным дополнительным заданием, если это так, скопируйте в директорию для зачетных заданий.
Помните о правильном названии своих директорий и файлов!
В скриптах Python, в том числе в комментариях, правильно использовать только латинские буквы!
(Для использования русских букв необходимо декларировать кодировку. Правильный подход: учите английский!)
Задание 0 (тренировочное)
Создайте в Far файл с расширением py и потренируйтесь писать разные команды Python. Лучше делать это в консоли Python (см. подсказки к заданию), но можно и в файле. Во втором случае используйте команду print, чтобы вывести на экран результат. Не бойтесь экспериментировать, попробуйте разные варианты! Например:
- задайте переменную и присвойте ей целое число;
- задайте переменную и присвойте ей дробное число;
выясните типы заданных переменных с помощью функции type();
задайте две переменные с разными строками: одну при этом ограничьте одинарными кавычками ', а другую – двойными ". Есть ли разница?
- попробуйте сложить эти две строки, вычесть одну из другой, умножить их и разделить одну на другую с помощью стандартных арифметических операторов. Что получается?
- попробуйте умножить строку на целое число
потренируйтесь с оператором подстановки % применительно к строке и числам. Убедитесь, что вы можете подставить с его помощью в одну строку целое число, дробное число с любым нужны числом знаков;
- проверьте, что происходит при использовании оператора подстановки: отбрасывается ли оставшаяся часть или округляется по математическим правилам?
- попробуйте разделить на ноль;
проверьте Python на прочность: попытайтесь вычислить большую степень от числа 10. Попробуйте посчитать следующие числа: 1010, 10100 и т.п. Есть ли предел компьютерной мощности? Оцените, сколько гуголов в том числе, которое компьютер смог посчитать последним.
Задание 1. Напишите скрипт, вычисляющий длину Вашего белка по вводимой пользователем информации
Создайте новый файл с расширением py и именем <Familiya>_pr5_scr01, где <Familiya> – Ваша фамилия в том же написании, что и раньше.
Внесите в него с помощью отдельных строк, начинающихся со знака комментария (#), следующую информацию:
Номера семестра, блока, практикума и задания, в рамках которого написан этот скрипт (например, # MSU FBB. Bioinformatics. Term 1. Block 2. Practice 5. Task 2.);
Название скрипта и версия (например, # Rounder v0.1);
Автора скрипта (например, # Author: Dibrova D.D.);
Дату последнего изменения скрипта (например, # Last modification date: 04.10.2013 12:10).
- Две пустые строки
Аналогичные данные необходимо вносить в каждый Ваш скрипт!
- Задайте в нем числовые переменные, значения которых получаются в результате ввода пользователя после приглашения, объясняющего, что именно следует ввести:
- координата начала Вашего гена в геноме;
- координата конца Вашего гена в геноме;
Создайте функцию, которая по координатам начала и конца гена в геноме вычисляла бы и возвращала длину белка.
- С помощью этой функции вычислите длину Вашего белка; проверьте, совпадает ли эта длина с тем результатом, который Вы занесли в таблицу 3 практикума 3.
- Сделайте так, чтобы Ваш скрипт выводил на экран посчитанную длину белка (с описанием, что это за число).
Задание 2. Напишите скрипт, правильно округляющий числа типа float до int
Создайте новый файл с расширением py и именем <Familiya>_pr5_scr02, где <Familiya> – Ваша фамилия в том же написании, что и раньше.
- Создайте в своем скрипте функцию, которая будет делать следующее:
Получать на вход число типа float;
Преобразовывать его в число типа int, но при этом математически корректно округлять его до целого числа: например, число 3.1 должно округляться до 3, а 3.5 или 3.78 – до 4.
- Сделайте так, чтобы пользователь мог проверить корректность Вашего алгоритма. Для этого предложите пользователю ввести дробное число, округлите его с помощью Вашей функции до целого и выведите результат на экран.
Необязательные задания (на дополнительные баллы)
Задание 3*. Дополнительные комментарии к скрипту
- Оформите более подробную "шапку" обоих скриптов. Для этого после строки с названием скрипта добавьте строки комментариев, содержащие описание функционала скрипта на английском языке.
При задании функции (! пользуясь специальным способом аннотирования функций, который описан в подсказках по Python), опишите кратко:
- что делает эта функция;
- какими должны быть ее аргументы;
- что функция возвращает.
Задание 4*. Коллекционер и победитель ошибок
Соберите коллекцию ошибок Вашего скрипта, с которыми Вы столкнулись в процессе работы. Предоставьте в папке credits второго блока протокол с обычным именем (например, Dibrova_pr5.doc), в котором будет приведена следующая информация об ошибках. Протокол оформите в удобном для Вас, но не нарушающим правила оформления протоколов, формате. Про каждый случай укажите:
Ошибка, выданная Python (чтобы получить текст ошибки в текстовый файл, а не просто на экран, воспользуйтесь подсказками).
- Место в скрипте, вызвавшее ошибку (та строчка или строчки, из-за которых все пошло наперекосяк).
- Объяснение, что именно неверно.
- Исправленная, работающая версия.