【发布时间】:2021-09-08 17:32:52
【问题描述】:
这是我的问题集第 6 周 DNA 的代码。当我使用 small.csv 进行测试时,它可以正常工作,但是在使用 large.csv 进行测试时,它似乎错误地计算了重复序列。谁能帮我找到我的代码中的错误?我对此很陌生。
import csv
import sys
if len(sys.argv) != 3:
sys.exit("Usage: python dna.py STRcounts DNASequence")
check = True
STRlist = []
Humanlist = []
# copy person list
with open(sys.argv[1],"r") as STR:
readSTR = csv.reader(STR)
for row in readSTR:
if check:
STRlist.append(row)
check = False
else:
Humanlist.append(row)
Slist = STRlist[0]
Slist.remove("name")
# print(Humanlist)
# print(Slist)
seq=[]
# copy sequence
with open(sys.argv[2],"r") as text:
readtext = csv.reader(text)
for i in readtext:
seq = i
text = seq[0]
# print(text)
# create dictionary for STR
STRdict = {}
for STR in Slist:
STRdict[STR] = 0
for STR in Slist:
for letter in range(len(text)):
if STR == text[letter:letter+len(STR)]:
STRdict[STR] += 1
check = False
for human in range(len(Humanlist)):
for STR in range(len(Slist)):
if str(STRdict[Slist[STR]]) == str(Humanlist[human][STR+1]):
check = True
else:
check = False
break
if check:
print(Humanlist[human][0])
break
if not check:
print("no match")
【问题讨论】:
-
cs50是哪个学校的?你能比“似乎错误地计算重复序列”更具体吗?
-
您能否提供一些样本 - 输入/输出?失败的案例呢?没有详细信息,很难为您提供帮助。
标签: python cs50 dna-sequence