假设我有一个序列“ADFG” 脚本应该查看它是否在列表(A,T,G,C)中,如果在列表中,则从字典中获取键并添加1。 因此,对于序列“ADFG”,它将向变量“a”和变量“g”加1,向变量“error”加2。 然而,虽然脚本没有返回错误,但是dicio[i]+=1行没有加上任何东西。。。。有什么想法吗? 我知道有更简单的方法,但我想用字典。你知道吗
seq= input ("dna seq:").upper()
a,t,g,c,error=0,0,0,0,0
dicio= {"A":a,"T":t,"G":g,"C":c}
for i in seq:
if i in ("A","T","G","C"):
dicio[i]+=1
a+=1
else:
error+=1
print("A={:.2f} %".format(a/len(seq)*100))
print("T={:.2f} %".format(t/len(seq)*100))
print("G={:.2f} %".format(g/len(seq)*100))
print("C={:.2f} %".format(c/len(seq)*100))
print("Da sequencia,{:.2f} % sao erros".format(error/len(seq)*100))
我认为您正在尝试使用字典来存储值,而不是让
a,t,g,c
连接到它并同时更新。下面是一些代码,它使用了一些字典功能,使其更加简洁:你的意思是t,g,c不受
dicio
的影响这很正常:字典没有引用变量,只是复制了初始值。将1添加到字典的值时,不会更新它们。 (
a
是代码中的一个特殊情况,它在所有情况下都会更新,但可能是一个bug,至少与代码的其余部分相比不符合逻辑)。你知道吗为了做你想做的事,你需要忘记你的
t,g
。。。变量,只需使用dicio
显示结果:(作为奖励,您将节省大量复制/粘贴:)
顺便说一句:如果您想初始化字典并保持键的顺序,您需要
ordereddict
:相关问题 更多 >
编程相关推荐