我是新的...... 我的脚本很长,所以我会写下具体的部分。
str= ''
#str is a long DNA sequence
def FIND_UPPER(str):
global x
x=str.upper()
y=0
while y>(-1):
y=x.find('CTTTGATTCCT')
z=x[y+11:y+22]
x=x[y+23:]
variability(z)
#variability is another function
FIND_UPPER(str)
然后我收到这条消息:
列表索引必须是整数,而不是str
关于这些行:
variability(z)
FIND UPPER(str)
我该如何解决这个问题? 感谢
修改 这是可变性:
A=[0]*10
C=[0]*10
T=[0]*10
G=[0]*10
def variability(z):
for i in z:
if i=='A':
A[i]=A[i]+1
i=i+1
elif i=='T':
T[i]=T[i]+1
i=i+1
elif i=='C':
C[i]=C[i]+1
i=i+1
elif i=='G':
G[i]=G[i]+1
i=i+1
return G
return C
return T
return A
我修好了,你告诉我,如果我说对了吗? :
def variability(z):
for i in range(len(z)):
if i=='A':
A[i]=z[i]
A[i]+=1
i+=1
elif i=='T':
T[i]=z[i]
T[i]+=1
i+=1
elif i=='C':
C[i]=z[i]
C[i]+=1
i+=1
elif i=='G':
G[i]=z[i]
G[i]+=1
i+=1
return G,C,T,A
答案 0 :(得分:3)
def variability(z):
for i in z:
if i=='A':
A[i]=A[i]+1
i=i+1
假设i == 'A'
,然后A[i]
实际上翻译为A['A']
,返回:
list indices must be integers, not str
这意味着您无法通过字符串索引访问列表,列表索引是整数。
此外,Python不支持多个return语句:
return G
return C
return T
return A
这将始终返回G
如果要返回所有这些值,请将其替换为:
return G,C,T,A
上述return语句返回tuple
个G,C,T,A
如果您只想返回一个,请将每个return
语句放在elif
子句中。
答案 1 :(得分:0)
在循环中,您必须执行以下操作:
for i in range(len(z)):
letter = A[i]
如果迭代范围函数结果,“i”将采用数值。如果你遍历字符串我会取字符串的每个字符
然后比较变量“letter”
if letter == 'A':
...
在variability函数中要小心,只返回第一个return语句中的值。