Посчитайте, сколько раз каждый символ появляется в строке - python - PullRequest
3 голосов
/ 26 мая 2019

В этом вопросе вам дается строка s, которая представляет собой строку ДНК.Строка s состоит из символов «A», «C», «G» и «T».Пример строки ДНК длиной 21 - «ATGCTTCAGAAAGGTCTTACG».

Ваша задача - написать код, который будет подсчитывать, сколько раз каждый из символов 'A', 'C', 'G' и 'T' встречается в s.Ваш код должен сгенерировать список из 4 целых чисел и распечатать его.

# Here is the DNA string:
    s = 'AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'
    # Type your code here

Неправильно, я написал строку с пробелами между буквами.

s='A G C T T T T C A T T C T G A C T G C A A C G G G C A A T A T G T C T C T G T G T G G A T T A A A A A A A G A G T G T C T G A T A G C A G C'
list_of_symbols=s.split(sep=' ')
list_of_symbols
word_count_dictionary={}
for A in list_of_symbols:
    if A not in word_count_dictionary:
        word_count_dictionary[A]=1
    else:
        word_count_dictionary[A]+=1

Ответы [ 2 ]

2 голосов
/ 26 мая 2019

Вы пытаетесь сделать то, что collections.Counter делает:

from collections import Counter

s = 'AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'

print(Counter(s))

Оттуда, чтобы получить список отсчетов, используйте:

Counter(s).values()
0 голосов
/ 26 мая 2019

Вы в основном на правильном пути, но нет необходимости разбивать строку, так как Python уже предлагает вам возможность циклически проходить по каждому символу строки.

Модифицированная версия вашей попытки будет:

s = 'AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'
word_count_dictionary = {}

for c in s:
    if c not in word_count_dictionary:
        word_count_dictionary[c] = 1
    else:
        word_count_dictionary[c] += 1

print(word_count_dictionary)
...