2016-03-29 4 views
2

私は、入力ファイルの中で「AJ000012.1」で始まる行数をカウントする関数を作成しようとしていますが、関数は何も返されません。私は初心者であり、問​​題が何であるか、そしてなぜこれが起こっているのかを完全には確信していません。答えは13で、コードを書くときは関数が返され続けるなし

count=0 
    input=BLASTreport 
    for line in input: 
    if line.startswith('AJ000012.1'): 
     count=count+1 
    print('Number of HSPs: {}'.format(count)) 

私は正しい答えを得ます。私はこの関数を作成し、それを呼び出すようにしようとすると、それは動作しません:

def nohsps(input): 
     count=0 
     for line in input: 
      if line.startswith('AJ000012.1'): 
      count=count+1 
      return 

    ans1=nohsps(BLASTreport) 
    print('Number of HSPs: {}'.format(ans1)) 

任意の助けを真剣にいただければ幸いです、ありがとうございました!あなたが戻ってきているものを指定せずに

(あなたが迷っている場合はHSPが高スコアセグメントペアを表します。入力ファイルは、DNA配列のためのアラインメント結果を示していますBLASTレポートファイルである)

答えて

5

あなたは、単にreturn、あなたは何も返さないでしょう。 Noneになります。あなたは何かを返そうとしています。あなたの仕様に基づいて、countを返すとします。さらに、あなたのforループの中に戻ってきているので、期待するカウントを決して得ることはできません。あなたは試合のすべての出現数をカウントしたいので、ループの外にこの戻り値を移動する必要があります:

def nohsps(input): 
    count=0 
    for line in input: 
     if line.startswith('AJ000012.1'): 
     count=count+1 
    return count 
+0

私は何かが間違っていたことを知っていました。 – pythonbeginner2506

関連する問題