Привет всем! Задача о ДНК-коде попалась вчера вечером на одном из форумов, посвященных 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-е
-
dna_code = str(input('Введите последовательность кода ДНК: \n'))
-
print('Введен ДНК-код: ', dna_code)
-
dna_code = dna_code.lower()
-
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)
И вот — видео с примером решения этой задачи, наконец, подоспело:
В случае возникновения вопросов — пишите на почту.