为了账号安全,请及时绑定邮箱和手机立即绑定

cs50 dna 当我调试我的代码时我得到了这个错误

cs50 dna 当我调试我的代码时我得到了这个错误

慕码人2483693 2023-06-20 16:12:36
这是我的代码,好的,我知道我的代码在算法上有 o^234234324 复杂性,但它适用于除 sequences/15.txt 和 sequences/16.txt 之外的所有序列import sysimport csvif len(sys.argv) != 3:    print("useage: filenameofdata.cvs filenameofsequence.txt")    sys.exit(1)with open(sys.argv[1], "r") as datafile:    readdata = list(csv.reader(datafile))with open(sys.argv[2], "r") as sequencefile:    readsequence = list(csv.reader(sequencefile))strs = list(readdata[0][1:])conlist = []dnanum = 0for move in (strs):    sequence = list(readsequence[0][0])    consecutively = 0    l = len(move)    cursor = [None] * 2    temp = [None] * l    x = 0    counter = 0    while counter == 0:        if sequence == []:            conlist.append(consecutively)            break        for oneletter in (sequence):            if x < 2:                cursor[x] = oneletter            temp[x] = oneletter            x += 1            if x == l:                asstring = ''.join(map(str, temp))                if asstring == move:                    dnanum += 1                    move                    temp = [None] * l                    x = 0                    continue                else:                    if consecutively < dnanum:                        consecutively = dnanum                    oneletter = sequence.remove(cursor[0])                    temp = [None] * l                    x = 0                    dnanum = 0                    break# this print was for check if i got the right str consecutivelyprint(conlist)conlist = ''.join(map(str, conlist))for y in readdata:    x = ''.join(map(str, y[1:]))    if conlist == x:        print(y[0])        sys.exit(1)print("No match")当我尝试在 sequences/15.txt 和 sequences/16.txt 中调试它时,或者如果我尝试运行它们,我在调试时没有输出按摩错误
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

那太复杂了。为了获得每个STR的最大连续STR数,我只写了6行代码:


for i in range(1, len(data[0])):  # loop through all STR


    count = 1


    string = data[0][i]  # assign each STR to a string


    while string * count in dna:  # if find 1 string, then try to find string*2, and so on


        count += 1


    counts.append(str(count - 1))  # should be decreased by 1 as initialized to 1


查看完整回答
反对 回复 2023-06-20
  • 1 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信