问题描述
我正在使用CS50并卡在该pset6上。
我编写了这段代码,对于“小型”给定的数据库,它可以正常工作。 在“大”位上,我的DNA序列值错误。 就像使用debug50一样,我得出Albus序列应该为15,49,38 ...而我的seq为21、55、64 ...
怎么了?以及为什么它在小型数据库而不是大型数据库上可以正常工作?
感谢您的帮助!
# Import ARGV and CSV library
from sys import argv,exit
import pandas as pd
import csv
# Check if argv has 3 arguments (program name,cvs file and dna sequence)
while True:
if len(argv) != 3:
print("Usage: python dna.py data.csv sequence.txt")
exit(1)
else:
break
with open(argv[2],'r',encoding="UTF-8") as txt:
dna_seq = txt.read()
#Find the number of STR - AGATC,TTTTTTCT,AATG,TCTAG,GATA,TATC,GAAA,TCTG
AGATC = dna_seq.count("AGATC")
TTTTTTCT = dna_seq.count("TTTTTTCT")
AATG = dna_seq.count("AATG")
TCTAG = dna_seq.count("TCTAG")
GATA = dna_seq.count("GATA")
TATC = dna_seq.count("TATC")
GAAA = dna_seq.count("GAAA")
TCTG = dna_seq.count("TCTG")
name = 0
if argv[1] == "databases/small.csv":
with open(argv[1],'r') as csv_file:
reader = csv.DictReader(csv_file)
for row in reader:
dna_db = row['name'],row['AGATC'],row['AATG'],row['TATC']
dna_db = list(dna_db)
seq = [AGATC,TATC]
seq = [str(x) for x in seq]
if dna_db[1:4] == seq:
name = dna_db[:1]
break
else:
name = "No match"
elif argv[1] == "databases/large.csv":
with open(argv[1],row['TTTTTTCT'],row['TCTAG'],row['GATA'],row['TATC'],row['GAAA'],row['TCTG']
dna_db = list(dna_db)
seq = [AGATC,TCTG]
seq = [str(x) for x in seq]
if dna_db[1:9] == seq:
name = dna_db[:1]
break
else:
name = "No match"
print(name)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)