您好我正在为学校开展一个小型项目,其任务是编写一个带有dna链和位置的函数,并检查DNA在拾取位置之前和之后是否是补码。 这是我到目前为止提出的代码。 翻译功能只是检查互补性,它工作得很好。 但如果我尝试将DNA送入lis函数,我会收到错误。
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 :(得分:0)
你可以在这里修理一些事情......
Examples:
| username | password |
| 'valid001@xyz.com' | 'password001' |
| 'valid002' | 'password002' |
是一个整数,而不是函数,因此pos
会导致帖子中出错。这应该是pos(1-i)
和dna[pos-1]
dna[pos+1]
从0开始,因此range
将成为0-1
并且还会超出范围错误-1
没有返回任何内容,只是打印。您需要translate()
。你最好在这里使用布尔return ("TRUE")
和True
而不是字符串。我没有浏览你的整个片段,所以可能会有更多的怪癖......