2017-11-02 14 views
0

안녕하세요 저는 현재 학교에서 작은 프로젝트를 진행 중입니다. 작업은 DNA 가닥과 위치를 취하고 DNA가 선택된 위치 전후에 보완되는지 여부를 확인하는 기능을 작성하는 것입니다. 이것은 내가 지금까지 생각해 낸 코드입니다. translate 함수는 단지 상보성을 검사하는 것으로 단지 잘 작동합니다. 하지만 lis 함수에 DNA를 공급하려고하면 오류가 발생합니다.TypeError : 'int'객체를 호출 할 수 없습니다 whats is wrong?

File "xxx", line 37, in lis 
while translate(dna[pos(1-i)],dna[pos(1+i)])=="TRUE": 

TypeError: 'int' object is not callable 

아무도 무엇이 잘못 될지 알고 있습니까?

def translate(seq, comp): 
#matchlist and checklist 
    basecomplement = {'A': 'T', 'C': 'G', 'G': 'C', 'T': 'A'} 
    baselist = ["A","T","G","C"] 
#check wether the input is a DNA 
    if seq not in baselist: 
     print("FALSE") 
    elif comp not in baselist: 
     print("FALSE") 
#check if the two (or more) bases are complements  
    else:  
     aaseq = [] 
     comp = [comp] 
     for character in seq: 
      aaseq.append(basecomplement[character]) 
      print(aaseq) 
#print result    
      if aaseq == comp: 
       print("TRUE") 
      else: 
       print("FALSE") 

def lis(dna, pos): 
#make a list from DNA input  
    dna = [dna] 
#go to pos in DNA list  
    for pos in range(len(dna)): 
     i=1 
#check if position before and after pos are complements 
#and advance a position if true else stop 
     while translate(dna[pos(1-i)],dna[pos(1+i)])=="TRUE": 
       i+=1 
       return(pos-i + pos+i) 
     break 

답변

0

당신이 여기에 해결하기위한 몇 가지 ...

  • pos하지 함수가 너무 pos(1-i)이 게시물에 오류를 일으키는, 정수입니다. 0 그래서 0-1에서 dna[pos-1]dna[pos+1]
  • range 시작 등이 있어야한다 뭔가 -1을 될 것입니다뿐만 아니라
  • translate() 만 인쇄를 아무것도 반환하지 않습니다 범위 부족 오류가 발생합니다. return ("TRUE")이 필요합니다. 문자열 대신 여기에 부울 TrueFalse을 사용하는 것이 나을 것입니다.

나는 전체 조각을 통과하지 않았기 때문에 많은 단점이있을 수있다 ...