python条件并计算和?

python条件并计算和?,python,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 += '|'

编写一个函数,根据以下评分方案比较两个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')
输出:

ATTCGT
||   |
ATCTAT
score:2

GATAAATCTGGTCT
 ||  |||  |   
CATTCATCATGCAA
score:4

ATCG
||||
ATCG
score:7  // this should be 10 because +3 for each consecutive match` 1 + 3 +3 +3 =10

CATTCATCATGCAA
 ||  |||  |   
GATAAATCTGGTCT
score:4
谁能给我小费吗

谢谢

此代码仅在签名完全等于
“| |”
时匹配

要查看最后两个字符,请尝试:

if signed[-2:] == '||':
我想你在计算分数时也有计算错误

以下是您的功能的固定和清理版本:

def pairwiseScore(seqA, seqB): 
    signed = ''
    score = 0
    for i in range(len(seqA)):
      if seqA[i] == seqB[i]:
          signed += '|'
          if signed[-2:] == '||':
              score += 3
          else:
              score += 1
      else:
          signed += ' '
          score -= 1
    return '%s\n%s\n%s\nscore:%d' % (seqA, signed, seqB, score)


提示:使用一致的缩进。除此之外,你有什么特别的问题吗?看看分数:7我应该得到分数:10,因为每次连续比赛+3看起来像是家庭作业。请集中你的问题。就目前的问题而言,不清楚要问什么,它将被关闭。是的,这是我试图完成的家庭作业。你在添加3分之前重置分数。例如:ATCG | | | | | ATCG分数应该是:1+3+3=10,如果你这样做,分数将是3
def pairwiseScore(seqA, seqB): 
    signed = ''
    score = 0
    for i in range(len(seqA)):
      if seqA[i] == seqB[i]:
          signed += '|'
          if signed[-2:] == '||':
              score += 3
          else:
              score += 1
      else:
          signed += ' '
          score -= 1
    return '%s\n%s\n%s\nscore:%d' % (seqA, signed, seqB, score)
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')