我正在尝试重新创建s.find('substring')函数。我遇到的两个问题如下:1)能够找到起始索引,例如:


Enter a phrase please"my best test ever!"
Enter a word you wish to find"best"
found first instance of letter at,  0
found first instance of letter at,  19
>>>


2)假设已找到正确的索引,我希望此代码段指示是否或
并非整个子字符串都在字符串内:

str2 in str1[i:len(str1)]


每当我在空闲状态下独立于主循环进行测试时,它均无法正常工作。

这是我的主要代码:

str1 = input("Enter a phrase please")
str2 = input("Enter a word you wish to find")




for i in range(len(str1)):
    if str2[0] == str1[i]:
        print("found first instance of letter at, ", i)
        str2 in str1[i:len(str1)]


任何建议将不胜感激,谢谢大家!

最佳答案

您的循环应该可以正常工作,但是您在str2 in str1[..]测试中没有做任何事情,也没有正确计算终点。您确实要在这里使用str2的长度。

您可以直接在str1上循环并使用enumerate() function添加索引。您需要将len(str2)结果添加到i以找到端点,并使其打印出测试。我在这里使用==,因为结果切片应该是相同的字符串:

for i, char in enumerate(str1):
    if str2[0] == char:
        print("found first instance of letter at,", i)
        print(str2 == str1[i:i + len(str2)])


演示:

>>> str1 = 'my best test ever!'
>>> str2 = 'best'
>>> for i, char in enumerate(str1):
...     if str2[0] == char:
...         print("found first instance of letter at, ", i)
...         print(str2 == str1[i:i + len(str2)])
...
found first instance of letter at,  3
True

关于python - 重新创建内置的s.find('substring')函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22134243/

10-13 07:43