自制的find函数运行但不返回任何内容

2024-10-04 03:21:19 发布

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

我是python新手,一直在解决问题,尝试学习一些编程。我的问题是这个程序的第二个功能。我希望程序返回的是要查找的子字符串在输入字符串中的每个位置。你知道吗

multifind("Ni! Ni! Ni! Ni!", "Ni", 0, 20) 

应该返回"0,4,8,12"

但是,当我在IDE中运行这个程序时,程序运行但不返回任何结果。我想知道是否有人可以告诉我在哪里/什么程序,是造成这一点? 最好是以初学者能理解的方式。你知道吗

def find(input_string, substring, start, end):

    x = (len(substring))

    for i in range(0, len(input_string)):
        if input_string[i:(i+x)] == substring:
            return i
        else:
            i += 1
    return -1


def multi_find(input_string, substring, start, end):

    loop = True
    nulist = ""
    r = start - 1
    while loop:
        r = find(input_string,substring, r + 1, end)
        if r != -1:
            if nulist == "":
                nulist += str(r)
            else:
                nulist += "," + str(r)
        else:
            loop = False
    return nulist

Tags: 字符串程序loopinputstringreturnifdef
2条回答

如果在“查找”中未使用“开始”,请尝试:

def find(input_string, substring, start):

    x = (len(substring))

    for i in range(start, len(input_string)):
        if input_string[i:(i+x)] == substring:
            return i
        else:
            i += 1

    return -1


def multi_find(input_string, substring, start):

    loop = True
    nulist = ""
    r = start - 1
    while loop:
        r = find(input_string,substring, r + 1)
        if r != -1:
            if nulist == "":
                nulist += str(r)
            else:
                nulist += "," + str(r)
        else:
            loop = False
    return nulist

print multi_find("Ni! Ni! Ni! Ni!", "Ni", 0)

我知道这并不完全是你想要的,但我会张贴一个线性函数为这个使用常规表达式

def multifind(input_string, substring):
    return [m.start() for m in re.finditer(input_string, substring)]

这将在子字符串中查找所有输入字符串第一个索引匹配项,并将其作为列表返回。你知道吗

相关问题 更多 >