之前我曾问过类似的问题,但在解决以前的问题之后我遇到的问题略有不同:
有两个txt文件的结构类似于列。文件1包含以下列:tagname1,aapos,synonymous;和文件2具有以下内容:tagname2,aapos1,aapos2。我想要做的是将文件1中的每个tagname1与文件2中的每个tagname2进行比较,看看它们是否匹配。对于每一个匹配,我希望程序然后检查对应于该特定标记名1的aapos值是否落在aapos1和aapos2之间,如我的第二个if语句所述。如果在浏览完所有文件2之后,它无法找到aapos的匹配项,那么我是否要执行以下if语句并检查文件1中的同义词是否等于0或1并将1添加到syn2或nonsyn2 ,视情况而定。如果对于特定的标记名1,程序将遍历文件2中的tagname2的整个列表,并且无法找到匹配项,则同样适用。
但是,根据我的代码,该程序只运行一次,我的snps值为1,nonsyn2的值为1。我不确定为什么会这样。
对于范围内的x(1,15):
flag = 0
snps = 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
if snps == 0:
if int(synonymous[x]) == 0:
nonsyn2 = nonsyn2 + 1
elif int(synonymous[x]) == 1:
syn2 = syn2 + 1
elif flag == 0:
if int(synonymous[x]) == 0:
nonsyn2 = nonsyn2 + 1
elif int(synonymous[x]) == 1:
syn2 = syn2 + 1
答案 0 :(得分:2)
你确定要打破较低的if语句吗?
例如:
if int(synonymous[x]) == 0:
nonsyn2 = nonsyn2 + 1
break
这些都在第一个for循环内(对于范围内的x(1,15):),所以如果满足其中一个条件,你将被淘汰出局。
如果在第一次循环中发生这种情况,可能就是为什么你只看到它运行一次。
我并不完全确定我理解您的尝试,但关键字“继续”可能就是您想要的。它将使程序进入循环的下一次迭代。