如何在python中不使用内置函数或切片来查找字符串的子字符串

如何在python中不使用内置函数或切片来查找字符串的子字符串,python,string,substring,slice,Python,String,Substring,Slice,我正在尝试编写一个基本的python程序,即在python中查找字符串的子字符串,但挑战是我不能使用内置函数或切片 MAINSTRING = raw_input('Enter a string : ') print 'You entered %s' %MAINSTRING isSubString = raw_input('Enter the substring : ') print 'You entered %s' %isSubString if isSubString in MAINS

我正在尝试编写一个基本的python程序,即在python中查找字符串的子字符串,但挑战是我不能使用内置函数或切片

MAINSTRING = raw_input('Enter a string : ')

print 'You entered %s' %MAINSTRING

isSubString = raw_input('Enter the substring : ')

print 'You entered %s' %isSubString

if isSubString in MAINSTRING:
    print isSubString + " is a substring of " + MAINSTRING
它可以工作,但我不能在语法中使用
,这是令人沮丧的部分。我也知道如何在python中使用切片方法,但我的挑战是如何将其突破到最基本的层面

抱歉说得这么含糊,我只是得到一个暗示


完整的代码由两个“for”循环组成,一个用于字符串,另一个用于子字符串

以避免除for循环之外的任何事情,一个函数可以这样做,尽管我不知道为什么。您还必须在
中使用注释中指出的
。如果主字符串中的一个字母与子字符串中的第一个字母匹配,则将其添加到临时字符串
t
,然后转到每个字符串中的下一个字母,查看它们是否匹配。如果临时字符串等于子字符串,则它存在并将返回

def substring(ss, s):
    x = 0
    t = ""
    for i in range(len(s)):
        if s[i] == ss[x]:
            t += ss[x]
            if t == ss:
                return s
            x+=1
        else:
            x = 0
            t = ""

是否允许您使用正则表达式模块?你可以用
迭代字符串中的每个字母,这就是你所需要的,从这里你就必须开始工作。看看Boyer Moore字符串搜索算法的Python实现可能会很有趣,这是一种比迭代字符串中的每个字母更有效的算法,请看啊哈,那么,这一定是个骗人的问题。如果你的老师说你不能使用内置函数,你必须使用
range
len
,答案是“没有逻辑上一致的方法来遵守这两个要求”我想否决你老师的任务。从技术上讲,这既使用了
中的
,也使用了OP可能不允许的切片。@poke是的,我知道,但正如你上面指出的,没有
中的
你就不能写for循环,我假设OP不能像
s[4:8]那样使用切片
而不是我添加的内容,我将其视为索引。(正如我们在问题注释中所指出的,我的评论并不是一个严重的抱怨,因为文字要求使其不可能实现;这是一个很好的答案)@poke我只是尝试用尽可能少的内置函数编写一个答案。这是个愚蠢的任务regardless@poke:在
中有两种不同形式的
,一种是对
\uuuuu包含
如果x在y中
)的隐式调用,另一种是对迭代器协议的隐式使用(对
\uuuu iter\uuuuuu
的初始调用,然后是对
下一个
(Py2)/
\uuu下一个
(Py3)的调用).你可以禁止一个而不禁止另一个,尽管这很愚蠢。