首页 > 解决方案 > 对于未运行 PSET6 DNA CS50x 的循环

问题描述

我的代码总是输出“No Match”,所以我在 debug50 上运行它。我的计数功能有时是正确的,但即使我知道它正确计算了 STR,它也会输出“不匹配”。我只在查找匹配项的代码上运行了 debug50,我发现由于某种原因,它跳过了包含所有代码的 for 循环,这些代码保存并比较了其中的所有内容。我知道如果不是“for i in csv_file”而是使用 range() 函数,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()

标签: pythonfor-loopcs50

解决方案


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

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

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


推荐阅读