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-е

  1. dna_code = str(input('Введите последовательность кода ДНК: \n'))
  2. print('Введен ДНК-код: ', dna_code)
  3. dna_code = dna_code.lower()
  4. dna_a = int(0)
  5. dna_g = int(0)
  6. dna_c = int(0)
  7. dna_t = int(0)
  8. for symbol in dna_code:
  9.     if symbol == 'a':
  10.         dna_a = dna_a + 1
  11.     elif symbol == 'g':
  12.         dna_g = dna_g + 1
  13.     elif symbol == 'c':
  14.         dna_c = dna_c + 1
  15.     elif symbol == 't':
  16.         dna_t = dna_t + 1
  17. print('Во введенном коде: \n Аденина: ', dna_a, '\n Гуанина: ', dna_g, '\n Цитозина: ', dna_c, '\n Тимина: ', dna_t)

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