以前にも同様の質問をしたことがありますが、以前の問題をいくつか修正した後に遭遇した、少し異なる問題を次に示します。
列に同様に構造化された 2 つの txt ファイルがあります。ファイル 1 には、次の列があります。tagname1、aapos、synonymous。ファイル 2 には、tagname2、aapos1、aapos2 があります。私がやりたいことは、ファイル 1 のすべての tagname1 をファイル 2 のすべての tagname2 と比較し、それらが一致するかどうかを確認することです。2 番目の if ステートメントで述べたように、一致するたびに、その特定の tagname1 に対応する aapos 値が aapos1 と aapos2 の間にあるかどうかをプログラムに確認させます。ファイル 2 をすべて調べても aapos に一致するものが見つからない場合にのみ、次の if ステートメントを実行し、ファイル 1 の同義語が 0 または 1 に等しいかどうかを確認し、syn2 または nonsyn2 に 1 を追加します。 、場合によっては。特定の tagname1 について、プログラムがファイル 2 の tagname2 のリスト全体を調べた場合も、同じことが当てはまります。
ただし、私のコードによると、プログラムは 1 回しか実行されず、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