我之前问过一个类似的问题,但是在修复了一些以前的问题后,我遇到了一个稍微不同的问题:
有两个 txt 文件,它们的结构类似地分成列。文件 1 有以下列:tagname1、aapos、同义词;并且文件 2 具有以下内容:tagname2、aapos1、aapos2。我想要做的是将文件 1 中的每个 tagname1 与文件 2 中的每个 tagname2 进行比较,看看它们是否匹配。对于每个匹配项,我希望程序检查与该特定标记名 1 对应的 aapos 值是否位于 aapos1 和 aapos2 之间,如我的第二个 if 语句所述。如果在遍历所有文件 2 后,找不到 aapos 的匹配项,那么我是否只想执行以下 if 语句并检查文件 1 中的同义词是否等于 0 或 1 并将 1 添加到 syn2 或 nonsyn2 ,视情况而定。如果对于特定的 tagname1,程序会遍历文件 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