一尘不染

Python:在字符串中查找子字符串并返回该子字符串的索引

python

我有:

  • 功能: def find_str(s, char)

  • 和一个字符串:"Happy Birthday"

我本质上是想输入"py"并返回,3但是我却不断2地返回。

码:

def find_str(s, char):
    index = 0           
    if char in s:
        char = char[0]
        for ch in s:
            if ch in s:
                index += 1
            if ch == char:
                return index

    else:
        return -1

print(find_str("Happy birthday", "py"))

不知道怎么了!


阅读 212

收藏
2020-12-20

共1个答案

一尘不染

理想情况下,您会
像痴呆的刺猬说的那样 使用
str.find

str.index
。但是你说你不能…

您的问题是您的代码仅搜索搜索字符串的第一个字符(第一个字符在索引2)。

您基本上是说ifchar[0]是in s,递增index直到ch == char[0]我测试它返回3时,但这仍然是错误的。这是一种方法。

def find_str(s, char):
    index = 0

    if char in s:
        c = char[0]
        for ch in s:
            if ch == c:
                if s[index:index+len(char)] == char:
                    return index

            index += 1

    return -1

print(find_str("Happy birthday", "py"))
print(find_str("Happy birthday", "rth"))
print(find_str("Happy birthday", "rh"))

它产生了以下输出:

3
8
-1
2020-12-20