对于循环不是 运行 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
希望这能解决您的问题! :)
我的代码总是输出“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
希望这能解决您的问题! :)