【问题标题】:PSET 6 DNA: How to count number of runs of consecutive STRsPSET 6 DNA:如何计算连续 STR 的运行次数
【发布时间】:2020-12-26 05:13:10
【问题描述】:

我已经为 PSET6 编写了大部分代码,并且我明白了它的要点。但是我被一些围绕如何迭代 DNA 序列和计算最长连续 STR 序列的逻辑所困。对于没有参加 CS50 课程的人,我基本上必须实施一个程序,根据他们的 DNA 来识别一个人。为了解决这个问题,我必须遍历 DNA 序列并计算 DNA 子串重复的次数,并计算该子串连续运行的最长运行时间。这是我的代码

def count_substring(sequence_dna, substring):
        strcounter = 0
        run = []
        substring = strlist
        for i in range(len(sequence_dna) - len(substring)):
            while i < len(sequence_dna):
                if sequence_dna[i:i+len(substring)] == substring:
                    strcounter += 1
                    i += i + len(substring)
                    run += 1
                    run.append()
                else:
                    run = 0
                    i += i + len(substring)
        return max(run)

因此,我创建了变量来跟踪重复的总数 (strcounter) 和一个数组来跟踪最长连续运行的 STR 重复。我打开了 csvfile 并将第一行 STR 名称设置为子字符串。然后我遍历 DNA 文本文件并开始计算 STR 出现的次数,但这是我卡住的地方,因此我的代码不完整。我不确定如何编写代码并将运行次数添加到我创建的数组中。我也不确定返回最大值是否会取所有值的最大值或每个 STR 运行次数的最大值。谁能帮我?非常感谢任何建议(关于您看到的任何错误)!

【问题讨论】:

    标签: python cs50


    【解决方案1】:

    Leoness,您似乎已将run 声明为与run = [] 的列表。稍后您将其用作带有run += 1 的int 变量,并再次用作带有run.append() 的列表。 考虑一下您希望如何对这部分逻辑进行编程。

    计算运行和“最大”“长度”的另一种方法是使用 findall 方法使用正则表达式。

    【讨论】:

    • 是的,不幸的是,我在发布此问题后意识到了这一点。我决定使用 run 一个 int 来跟踪运行,然后创建另一个 int 变量来计算最长的运行。我摆脱了max() 函数,所以希望它现在能更好地工作。如果没有,我会检查findall 方法。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多