函数错误并使代码正常工作

2024-09-29 23:17:34 发布

您现在位置:Python中文网/ 问答频道 /正文

def PatternCount(Text,Pattern):
    count = 0
    for i in range(0,1+len(Text)-len(Pattern)):
        if Text[i:i+len(Pattern)] == Pattern:
            count = count + 1
    return count
def Frequentwords(Text,K):
    FrequentPattern = {}
    for i in range(0,len(Text)-K):
        Pattern = Text(i,K)
        Count(i)=PatternCount(Text,Pattern)
    maxCount = max(Count)
    for i in range(0,len(Text)-K):
        if Count(i) == maxCount:
            FrequentPattern.add(Text(i,K))
        list(set(FrequentPattern))
        return FrequentPattern
Text = input("enter DNA sequence: ")
K = int(input("enter the length of the pattern: "))
print(Frequentwords(Text,K))

此代码用于查找字符串文本(DNA序列)中最常见的K-mers(短DNA序列的长度)检查此字符串中出现的所有K-mers(有| Text |− k+1(例如k-mers),然后计算每个k-mers在文本中出现的次数

此行中有一个错误:

Count(i)=PatternCount(Text,Pattern)

它是SyntaxError:无法分配给函数调用

我要这个密码 输入:字符串文本DNA序列和整数k。 输出:文本中所有最常见的k-mers


Tags: 字符串textin文本forlencountrange
1条回答
网友
1楼 · 发布于 2024-09-29 23:17:34

这一行Count(i)=PatternCount(Text,Pattern)没有意义,因为您正在将一个函数分配给另一个函数。如果Count是一个数组,那么它应该是这样的:

Count[i]=PatternCount(Text,Pattern)

您应该将代码中的所有Count(i)更改为Count[i]。下面是修复的代码:

def pattern_count(sequence,pattern):
    count = 0
    for i in range(0,1+len(sequence)-len(pattern)):
        if sequence[i:i+len(pattern)] == pattern:
            count = count + 1
    return count

def frequent_words(sequence,t):
    counters = [0]*len(sequence)
    for i in range(0,len(sequence)-k):
        pattern = sequence[i:i+k]
        counters[i] = pattern_count(sequence,pattern)
    maxCounter = max(counters)
    print(counters)
    for i in range(0,len(sequence)-k):
        if counters[i] == maxCounter:
            frequent_pattern = sequence[i:i+k]
    return frequent_pattern

sequence = input("enter DNA sequence: ")
k = int(input("enter the length of the pattern: "))
print(frequent_words(sequence,k))

基本思想是好的,但是有一些语法错误。我还更改了一些变量名称以符合标准

您可以通过以下方式对此进行优化:

def frequent_words(sequence,t):
    counters = [0]*len(sequence)
    for i in range(0,len(sequence)-k):
        pattern = sequence[i:i+k]
        counters[i] = pattern_count(sequence,pattern)
    max_index = counters.index(max(counters))
    return sequence[max_index:max_index+k]

我希望这对你有用

相关问题 更多 >

    热门问题