1. ホーム
  2. python

Python 文字列中の部分文字列を検索し、そのインデックスを返す

2023-09-23 06:48:36

質問

私は持っています。

  • 関数です。 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"))

何が悪いかわからない!

どのように解決するのですか?

理想的には str.find または str.index のように、頭の悪いハリネズミが言ってました。しかし、あなたはできないと言っていた・・・。

あなたの問題は、あなたのコードが、インデックス2にある検索文字列の最初の文字だけを検索していることです。

あなたは基本的に、もし char[0]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