Kodomo

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

Учебная страница курса биоинформатики,
год поступления 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. Если текущее число четное — делит его нацело на 2 и далее работает с результатом (возвращаясь к пункту 1)
  4. Если текущее число нечетное — умножает его на 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 такая запись не подойдёт.