python - 对于未运行 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()
解决方案
我知道你有什么问题。当您执行此循环时:
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
希望这能解决您的问题!:)
推荐阅读
- spring - 如何在 Spring Security 中正确实现 TOTP (2FA)?
- c - 真/假开关切换回零
- r - 错误:Tibble 列必须具有一致的长度,只有长度为 1 的值被回收:* 长度 61:列 `y` * 长度 10358:列 `x`
- java - 如何打印特定的多维数组java
- nginx - Nginx 初学者 - 访问 / 的正则表达式是什么
- javascript - Vue 选择框,使用一个选项预选并使用来自不同 axios 调用的数组填充选项
- asp.net-core - 枚举所需的 DataAnnotation 在 Razor 页面中不起作用
- android - Android 登录验证 API
- javascript - 使用我在 Gatsby 网站上使用 Babel 和 Rollup 创建的 ES6 React Lib
- google-sheets - 如何从 Atom 插件访问公开的只读 Google 电子表格?