对于循环不是 运行 PSET6 DNA CS50x

For loops not running PSET6 DNA CS50x

我的代码总是输出“No Match”,所以我在 debug50 上 运行 它。我的计数功能有时是正确的,但即使我知道它已正确计算 STR,它也会输出“不匹配”。我 运行 debug50 只是查找匹配项的代码,我发现出于某种原因,它跳过了 for 循环,该循环包含保存和比较其中所有内容的所有代码。我知道如果不是“for i in csv_file”而是使用 运行ge() 函数,for 循环就会运行。我不知道为什么会这样,因为我之前在代码中做了完全相同的事情。 Csv_file 是 small.csv 或 large.csv 的 .reader(),具体取决于您作为命令行参数输入的内容。

# comparing repetitions with people
csv_dic = []
count = 0
match = False
for i in csv_file:
    csv_dic.append(csv_file[i])
for line in csv_file:
    name = line[0]
    for i in range(len(maxes)):
        if csv_dic[i] == maxes[i]:
            match = True
            match_name = name
if match == True:
    print(match_name)
else:
    print("No Match")
file.close()
f.close()

我知道你有什么问题。当您执行此循环时:

for i in range(len(maxes)):
        if csv_dic[i] == maxes[i]:
            match = True
            match_name = name

您没有考虑 csv_dict 不包含值,而是包含名称或 STR 本身的名称。您应该将其更改为:

for i in range(1, len(maxes)):
        if csv_dic[i] == maxes[i]:
            match = True
            match_name = name

希望这能解决您的问题! :)