python条件和求和?

2024-06-07 07:47:43 发布

您现在位置:Python中文网/ 问答频道 /正文

写一个函数,根据下面的计分方案比较两个DNA序列:+1代表一个匹配,+3代表每个连续匹配,-1代表每个不匹配。在

我的代码:

def pairwiseScore(seqA, seqB): 
  '''1+1+3-1-1+1+3+1-1-1+1-1-1-1'''
  print 
  signed = ''
  score = 0
  for i in range(len(seqA)):
    if(seqA[i] == seqB[i]):         
        signed += '|'
        score += 1
        if signed=='||':
            score=0
            score += 3
        else:
            score += 1

    else:
        signed += ' '
        score -=1
  return seqA+"\n"+signed+"\n"+seqB+"\n"+'score:'+ str(score)

print pairwiseScore("ATTCGT", "ATCTAT")  
print pairwiseScore("GATAAATCTGGTCT", "CATTCATCATGCAA")
print pairwiseScore('ATCG', 'ATCG')
print pairwiseScore('CATTCATCATGCAA', 'GATAAATCTGGTCT')

输出:

^{pr2}$

谁能给我小费吗?在

谢谢


Tags: 函数if方案代表elsescoresignedprint
2条回答
if signed=='||':

此代码仅在有符号正好等于'||'时匹配。在

你想看看最后两个字符,那么试试:

^{pr2}$

我想你在计算分数时也有计算错误。在

以下是您的函数的固定和清理版本:

^{3}$

Look here

def pairwiseScore(seqA, seqB): 
  '''1+1+3-1-1+1+3+1-1-1+1-1-1-1'''
  print 
  signed = ''
  score = 0
  for i in range(len(seqA)):
    if(seqA[i] == seqB[i]):         
        signed += '|'
        if i > 0 and signed[len(signed)-2]=='|':
            score += 3
        else:
            score += 1

    else:
        signed += ' '
        score -=1
  return seqA+"\n"+signed+"\n"+seqB+"\n"+'score:'+ str(score)

print pairwiseScore("ATTCGT", "ATCTAT")  
print pairwiseScore("GATAAATCTGGTCT", "CATTCATCATGCAA")
print pairwiseScore('ATCG', 'ATCG')
print pairwiseScore('CATTCATCATGCAA', 'GATAAATCTGGTCT')

相关问题 更多 >

    热门问题