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

2024-07-03 05:51:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我以前也问过类似的问题,但在解决了之前的一些问题之后,我遇到了一个稍微不同的问题:

有两个txt文件的结构类似于列。文件1包含以下列:tagname1、aapos、synonymous;文件2包含以下列:tagname2、aapos1、aapos2。我要做的是比较文件1中的每个标记名1和文件2中的每个标记名2,看它们是否匹配。对于每一个匹配,我希望程序检查与特定标记名1对应的aapos值是否在aapos1和aapos2之间,如我的第二个if语句所述。如果在浏览完所有文件2之后,找不到aapos的匹配项,那么我只想执行以下If语句,检查文件1中的同义词是否等于0或1,并根据具体情况将1添加到syn2或nonsyn2。如果对于特定的tagname1,程序遍历文件2中的整个tagname2列表,但找不到匹配项,则同样适用。你知道吗

但是,根据我的代码,这个程序只运行一次,snps的值为1,nonsyn2的值为1。我不知道为什么会这样。你知道吗

对于范围(1,15)内的x:

    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

Tags: 文件标记程序ifintflagsnpstagname1
1条回答
网友
1楼 · 发布于 2024-07-03 05:51:03

你确定要打断低if语句吗?你知道吗

例如:

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

        nonsyn2 = nonsyn2 + 1
        break

这些都在第一个for循环中(对于范围(1,15)中的x):),因此如果满足其中一个条件,您将退出循环。你知道吗

如果这发生在您的第一个循环中,这可能就是为什么您只看到它运行一次的原因。你知道吗

我不完全确定我是否理解你的意图,但关键字“continue”可能就是你想要的。它将使程序进入循环的下一个迭代。你知道吗

相关问题 更多 >