2017-10-17 7 views
-1

だから、誰かが私にこれを手伝ってほしいと思っていた。私はどこから始めるべきか理解していない?どんな助けもありがとう。count_baseは辞書として戻る

count_basesという名前のファンクションを作成します。このファンクションは、各文字が特定の文字列に含まれる回数をカウントします。結果は辞書として返され、文字は大文字で、出現回数は(整数)値として返されます。

たとえば、文字列 'ATGATAGG'を使用して関数を呼び出す場合は、{'A': 3, 'T': 2, 'G': 3, 'C': 0}を返します。関数がprint()ではなくreturnを使用していることを確認してください。辞書内のキーの順序は、この順序に従う必要はありません(2つのマーク)。

シーケンス文字列の下位および/または大文字のDNA文字を渡したときに関数が機能することを確認します。 (2つのマーク)

DNA配列は、縮重ヌクレオチドを示すために、時々A、C、G〜T以外の文字を含む。例えば、RはAまたはG(プリン塩基)を表すことができる。プログラムがA、C、G、T以外の文字を検出した場合は、その文字の頻度を数えて辞書オブジェクト内に戻す必要があります。 (2点)。

def count_bases(input_str): 
    result = {} 
    for s in input_str: 
     try: 
      result[s]+=1 
     except: 
      result[s] = 1 

    return result 

print(count_bases('ATGATAGG')) 

出力::次のコード

答えて

0

使用

{'A': 3, 'T': 2, 'G': 3} 
0

はそれを試してみてください。

def f(input): 
    d = {} 
    for s in input: 
    d[s] = d.get(s,0)+1 
    return d 
0
from collections import Counter 

def count_bases(sequence): 
    # since you want to count both lower and upper case letters, 
    # it'd be better if you convert the input sequence to either upper or lower. 
    sequence = sequence.upper() 
    # Counter (from collections) does the counting for you. It takes list as input. 
    # So, list(sequence) will separate letters from your sequence into a list of letters ('abc' => ['a', 'b', 'c']) 
    # It returns you a Counter object. Since you want a dictionary, cast it to dict. 
    return dict(Counter(list(sequence))) 

count_bases( 'ATGATAGGaatdga')

{ 'A':6 'T':3、 'G':4 'D':1}

+1

ない "方法を始めるには考えて、" 持っていない人に意味をなす可能性が高いです。 OPは、 'Counter'が' collections'パッケージのクラスであることを知る必要があります。 –

関連する問題