Задача о ДНК-коде

Python — задача о ДНК-коде

Привет всем! Задача о ДНК-коде попалась вчера вечером на одном из форумов, посвященных Python. Собственно, условие звучит следующим образом:

Пользователь вводит строку, генетический код, состоящий из букв А(аденин), G(гуанин), C(цитозин),T(тимин).
Задание: посчитать сколько гуанина, тимина, цитозина, аденина входит в данную строку ген. кода.
Пользователь может вводить строку некрасивой, то есть использовать маленькие и большие буквы.

Ссылка на первоисточник если что — тут. Стало интересно, а значит сегодня — задача о ДНК-коде 🙂

Как видно из условия — первое, что нужно делать — получить от пользователя исходный ДНК-код. Будем получать его в виде строки, ибо именно строку проще всего потом привести к единому виду (в условии четко оговорено, что код может быть введен как большими, так и маленькими буквами):
dna_code = str(input(‘Введите последовательность кода ДНК: \n’))

т.е. в переменную dna_code вводим строчный код.
После этого нужно (не обязательно, но почему бы и нет?) вывести на экран введенный ДНК-код, что бы пользователь мог повосторгаться своим творением:
print(‘Введен ДНК-код: ‘, dna_code)

Теперь приведем введенный ДНК-код к единому виду — маленькие буквы. В этом нам поможет функция lower(), о которой я писал подробнее тут:
dna_code = dna_code.lower()

т.е. переменная dna_code, содержавшая ДНК-код в строчном виде в перемешанных символах приводится к строчной переменной, в котором ДНК-код содержится в виде маленьких букв.

Теперь вводим в программу переменные, отвечающие за подсчет количества символов, используемых в ДНК-коде:
dna_a = int(0) #отвечает за аденин
dna_g = int(0) #отвечает за гуанин
dna_c = int(0) #отвечает за цитозин
dna_t = int(0) #отвечает за тимин

Важно отметить, что начальное значение каждой переменной равно нулю. А дальше — все просто 🙂 По циклу проверяем каждый символ в переменной на соответствие определенному, и если находится соответствие — увеличиваем счетчик той или иной переменной на единицу:
for symbol in dna_code:
    if symbol == ‘a’:
        dna_a = dna_a + 1
    elif symbol == ‘g’:
        dna_g = dna_g + 1
    elif symbol == ‘c’:
        dna_c = dna_c + 1
    elif symbol == ‘t’:
        dna_t = dna_t + 1

Ну, а теперь вообще все просто — выводим финальные показания счетчиков:
print(‘Во введенном коде: \n Аденина: ‘, dna_a, ‘\n Гуанина: ‘, dna_g, ‘\n Цитозина: ‘, dna_c, ‘\n Тимина: ‘, dna_t)

Как видно — ничего сложного 🙂 И да, как всегда — исходный код программы доступен в полном виде на моем Git-е

В случае возникновения вопросов — пишите на почту.