这是代码:
for x in range(1,15):
flag = 0
for b in range (1,15):
if tagname1[x]== tagname2[b]:
flag = 1
if int(aapos1[b]) <= int(aapos[x])<= int(aapos2[b]):
snps = snps + 1
elif int(synonymous[x]) == 0:
nonsyn2 = nonsyn2 + 1
break
elif int(synonymous[x]) == 1:
syn2 = syn2 + 1
break
if flag == 0:
if int(synonymous[x]) == 0:
nonsyn2 = nonsyn2 + 1
break
elif int(synonymous[x]) == 1:
syn2 = syn2 + 1
**break**
当我打印 snps 的值时,我最终得到的值为 0,这不应该是这种情况。我自己查看了数据,它应该产生一个值 3。如果我删除了最后一个加粗的“中断”运算符,那么它工作得很好,但是最后一个中断需要在那里让我得到一个正确的 syn2 值而且我不确定为什么在那里休息会影响前面的循环正常工作。任何人都可以建议我可能做错了什么以及如何解决这个问题?
Aapos 是文件 #1 中的一个值。Aapos1 和 aapos2 是文件 #2 中的 2 个值,因此在代码中,我正在检查文件 1 中的给定标记名是否,与该标记名关联的 aapos 编号是否介于 aapos1 和aapos2(假设文件#1 中的标记名等于文件#2,由第一个 if 语句设置)。因此,对于文件#1 (tagname(x)) 中的每个标记名,我希望程序检查文件#2 中的每个标记名,看看是否满足我设置的两个条件(通过前两个 if 语句)。如果是这样,那么我想要 snp + 1。但由于某种原因,程序不会遍历文件 #2 中的每个标记名,它只是遍历第一个标记名。我已经对此进行了测试。所以,我的猜测是最后一个 break 语句的位置导致了这个问题,因为一旦我删除它,它就可以正常工作。然而,
谢谢!!