Учебная страница курса биоинформатики,
год поступления 2020
ВАЖНО, ИНАЧЕ МЫ НЕ НАЙДЕМ ВАШИ СКРИПТЫ!!!
Все файлы со скриптами сохраняйте в папку ~/term1/block2/sem7, название скрипта - <название_задания>.py
1. nucleobase
Пользователь вводит одну из букв: A, T, G или C. Программа определяет, является ли основание производным пурина или пиримидина. Напомню, аденин и гуанин являются производными пурина, а тимин и цитозин - пиримидина. Если введённое основание является производным пурина, программа печатает "purine", а если пиримидина - "pyrimidine". Пользователь может вводить обозначение в верхнем или нижнем регистре.
Пример входа:
A
Пример выхода:
purine
2. divisors
Выведите все делители введённого пользователем числа (подразумевается, что оно целое и положительное).
Пример входа:
10
Пример вывода:
1 2 5 10
3. collatz-conjecture
Программа приглашает пользователя ввести целое положительное число.
Далее программа делает следующее:
- Печатает текущее число
- Если текущее число равно 1 — останавливается
- Если текущее число четное — делит его нацело на 2 и далее работает с результатом (возвращаясь к пункту 1)
- Если текущее число нечетное — умножает его на 3, потом к результату и прибавляет 1 и далее работает с тем, что получилось (возвращаясь к пункту 1)
Пример входа:
10
Пример вывода:
10 5 16 8 4 2 1
4. countlines
Программа выдаёт на консоль число непустых строк в файле input-countlines.txt (строка считается пустой, если метод strip() без параметров выдаёт на ней строку нулевой длины)
Указание: заведите переменную-счётчик типа int, которую увеличивайте на 1 каждый раз, как встретите непустую строку.
Пример входного файла:
alpha beta to be or not to be that is the question
Пример вывода в консоли:
There are 4 non-empty lines in your file.
5. menu
Программа получает на вход список блюд через запятую. Слева и справа от запятых может быть сколько угодно пробелов (включая 0).
Программа распечатывает список блюд в форме таблицы с номерами блюд в списке. Указание - разбить строку по разделителю можно при помощи команды <строка>.split(<разделитель>)
Пример входа:
Pie, Cake, Fish
Пример выхода:
1. Pie 2. Cake 3. Fish
6. cp
Программа имитирует работу программы cp <имя_входного_файла> <имя_выходного_файла> без дополнительных параметров на текстовых файлах, то есть копирует все строки входного файла в выходной файл. Имя входного и выходного файла вводятся пользователем по очереди, сначала входной, потом выходной.
7. cat
Программа принимает от пользователя на вход несколько имен текстовых файлов по очереди (при помощи команды input). Сигналом окончания ввода является строка "STOP"
Далее программа записывает строки из этих файлов в новый файл joined.txt
Пример входного файла1:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Пример входного файла2:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, laboris nisi ut aliquip ex ea commodo consequat.
Пример выходного файла joined.txt, :
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit, laboris nisi ut aliquip ex ea commodo consequat.
8. wc
Программа имитирует выдачу команды wc (без параметров) на файле input-wc.txt, то есть выдаёт через пробел число строк (пустые и непустые строки не различаются), число слов и число символов.
Указание: заведите три счётчика. Число символов в строке — это её длина. Число слов в строке — это длина списка, выдаваемого методом split().
Пример входного файла:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Пример вывода в консоли:
There are 5 lines, 36 words, and 239 characters in your file.
9. seqnames
Программа читает файл input-seqnames.fasta с последовательностями в fasta-формате и создаёт файл output-seqnames.txt с именами этих последовательностей, по одному в строке.
Указание: если строка начинается с ">", надо разделить её по пробелам и записать в выходной файл первый элемент получившегося списка, не забыв убрать '>' в начале и добавить '\n' в конце.
Убрать начальный символ из строки можно, взяв "срез" с символа 1 до конца. Если в переменной s хранится строка, то s[1:] будет означать ту же строку без начального символа (напоминаем, что номер начального символа в строке — 0).
Для любопытных: посмотреть, что делает метод строки str.startswith
Пример входного файла:
>FOXB1 binding motif 1; score 0.058994 CGATCTGAGCAGAAGTCATACACATGGGAATGTATATAAGTCGAATCGTATGCC CATGGGAATGTATATAAGTCGAATCGTATGCCATACACATGATACACATGATAC CATGGGAATGTATATAAGTCGAATCGTATGCCATACACAATACACATGTATACA ATACACATGAAGTCGAATCGTATGCCAT >FOXB2 binding motif 2; score 0.074589 CGATCTGAGCAGCATAATGTCAATATTTACATAAGGAATCGCGAATC >GABPA binding motif 3; score 0.128900 GGGGAAGGGCACGAGGCGGGAGGCGAGGCG
Пример файла на выходе:
FOXB1 FOXB2 GABPA
10. average
Файл input-average.txt содержит числа, по одному в строке. Программа читает этот файл и выдаёт на консоль среднее значение.
Указание: заведите переменную-счётчик и другую переменную для суммы чисел.
Пример входного файла:
10 8 22 340 123419 -10 22.4 13 331
Пример вывода в консоли:
The arithmetic mean of the numbers in the file is 13795.044444444444.
Еще один пример входного файла:
-1E10 1E8
Пример вывода в консоли:
The arithmetic mean of the numbers in the file is -4950000000.0.
Замечание: в python (и в большинстве программ и языков программирования) вместо "1000000.0" можно писать "1E6", что означает единицу, умноженную на десять в шестой степени. float переводит вторую строку в число не хуже, чем первую; правда, для int такая запись не подойдёт.