Учебная страница курса биоинформатики,
год поступления 2019
Домашнее задание 3
Файлы с программами должны иметь имена вида <задание>.py (например, trigonometry.py для первого задания) и лежать в директории ~/term1/block2/homeworks к утру 1 ноября.
1. trigonometry (3 или 4 балла)
Программа принимает первым аргументом командной строки слово "sin" или "cos", а вторым — число. Если всё введено корректно, то программа печатает строку вида:
fun(x) = y
где:
- fun — это либо sin, либо cos, в зависимости от первого аргумента командной строки
- x — второй аргумент командной строки (точно как в командной строке!)
y — синус или косинус (в зависимости от первого аргумента командной строки) угла в x градусов, с четырьмя знаками после десятичной точки.
Если же первый аргумент не "sin" и не "cos" или если второй аргумент не может быть истолкован как число, то программа печатает строку:
I can’t compute fun(x)!
где fun — первый, а x — второй аргумент командной строки.
4 балла вместо 3, если при неверном числе аргументов командной строки программа сообщает пользователю о некорректном вводе и штатно завершает работу.
Примеры:
python3 trigonometry.py cos 60 cos(60) = 0.5000
python3 trigonometry.py tg 60 I can’t compute tg(60)!
2. randseq (3 балла)
Программа принимает как аргумент командной строки целое положительное число и создаёт файл random.fasta, которые содержит одну случайную последовательность нуклеотидов (то есть из букв a, t, g, c) в fasta формате, длины, заданной в командной строке. Именем последовательности должно быть слово random, описанием — "sequence of length n", где n — заданная длина.
Если задано не число или число не целое положительное, программа должна понятными словами сообщать об этом и штатно завершать работу, пустой файл в этом случае создаваться не должен.
Пример запуска:
python3 randseq.py 10
Пример выходного файла при таком запуске:
>random sequence of length 10 attgatttgc
3. deriv (2 балла)
Программа принимает в командной строке произвольное количество чисел и создаёт файл output-deriv.txt, в котором первая строка имеет вид:
x f f’
(через табулятор)
Каждая из оставшихся строк выходного файла отвечает одному из аргументов командной строки. Эти строки должны содержать по три числа, через табулятор, в экспоненциальном формате с тремя знаками после точки. Первое число такой строки файла — это соответствующий аргумент командной строки, обозначим его x. Второе число — это значение функции f(x) = ln(1+x2) в точке х. Третье число — это значение производной той же функции в точке x.
4. files (2 балла)
Программа принимает в командной строке произвольное количество имён файлов и выводит на консоль для каждого файла его имя и через табулятор — число строк в нём. Если какого-то файла не существует (или он закрыт на чтение, иными словами, если open("<файл>", "r") выдаёт ошибку), то в соответствующей строке вместо числа строк должно выводиться слово "unavailable".
См. также дополнительное задание (срок — 15 ноября)
5. RTM (2 балла за одну разобранную функцию, 1 за остальные, максимально за все задание - 5 баллов )
Изучите документацию одной из приведенных ниже функций/объектов Python, опишите, что она делает в отчете и приведите пример ее разумного применения (пример из мануала не считается) в виде скрипта на Python.
1) os.path.join
2) os.mkdir
3) glob.glob
4) isinstance
5) set
6) collections.Counter
7) collections.defaultdict
8) itertools.permutations
9) subprocess.call