我有:
功能: def find_str(s, char)
def find_str(s, char)
和一个字符串:"Happy Birthday",
"Happy Birthday"
我本质上是想输入"py"并返回,3但是我却不断2地返回。
"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)。
您基本上是说ifchar[0]是in s,递增index直到ch == char[0]我测试它返回3时,但这仍然是错误的。这是一种方法。
char[0]
s
index
ch == char[0]
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