为什么循环不能按预期运行?详情如下:

时间:2013-10-23 18:40:16

标签: python loops if-statement break

之前我曾问过类似的问题,但在解决以前的问题之后我遇到的问题略有不同:

有两个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

1 个答案:

答案 0 :(得分:2)

你确定要打破较低的if语句吗?

例如:

    if int(synonymous[x]) == 0: 

        nonsyn2 = nonsyn2 + 1
        break

这些都在第一个for循环内(对于范围内的x(1,15):),所以如果满足其中一个条件,你将被淘汰出局。

如果在第一次循环中发生这种情况,可能就是为什么你只看到它运行一次。

我并不完全确定我理解您的尝试,但关键字“继续”可能就是您想要的。它将使程序进入循环的下一次迭代。