Python CS50 DNA-它适用于小型.csv,但不适用于大型

Python CS50 DNA-它适用于小型.csv,但不适用于大型,python,cs50,Python,Cs50,我试图从CS50解决这个问题,但它只适用于小型数据库,当我尝试用于大型数据库时,程序会计算过多 import csv if len(argv) != 3: print("DIGITA DIREITO, IMBECIL") exit() with open(argv[1], "r") as source: reader = list(csv.reader(source)) reader[0].remove("n

我试图从CS50解决这个问题,但它只适用于小型数据库,当我尝试用于大型数据库时,程序会计算过多

import csv

if len(argv) != 3:
    print("DIGITA DIREITO, IMBECIL")
    exit()

with open(argv[1], "r") as source:

    reader = list(csv.reader(source))
    reader[0].remove("name")

    i = reader[0]

with open(argv[2], "r") as sequence:

    seq = sequence.read()

values = []

for j in range(len(i)):

    value = 0
    counter = 0
    pos = 0
    prevpos = 0

    while pos < len(seq):

        pos = seq.find(i[j], pos)

        if pos == -1:
            counter = 0
            break

        elif (pos != 1):
            counter += 1
            prevpos = pos
            pos += len(i[j])
            if value < counter:
                value = counter


    values.append(value)
for row in range(len(reader)):
        print(reader[row])
print(values)

values = list(map(str, values))

search = list(reader)
search.pop(0)

for result in search:
    if result[1:] == values:
        print(f"{result[0]}")
        break

    elif result == search[-1]:
        print("No match")

导入csv
如果len(argv)!=三:
印刷品(“DIGITA DIREITO,笨蛋”)
退出()
以open(argv[1],“r”)作为源:
读卡器=列表(csv.reader(源))
读取器[0]。删除(“名称”)
i=读卡器[0]
以open(argv[2],“r”)作为序列:
seq=sequence.read()
值=[]
对于范围内的j(len(i)):
值=0
计数器=0
pos=0
prevpos=0
当pos
我认为您只是在计算序列中的STR重复次数,而不是最大连续STR重复次数。这就是问题所要问的

请解释你所说的“过度计数”是什么意思-预期输出是什么,你实际得到了什么?