Python 只是想有人给我解释一下他们到底是什么意思。这是我的问题

Python 只是想有人给我解释一下他们到底是什么意思。这是我的问题,python,string,substring,Python,String,Substring,正在做一个来自codecademy的Python部分的问题。我遇到了这个问题。我确实解决了这个问题,但后来我检查了他们的暗示,以了解和理解他们的做事方式。我真的不明白。有人能给我解释一下吗 问题是: 在接受一个名为word的字符串、一个名为start的字符和另一个名为end的字符的字母之间编写一个名为substring_的函数。此函数应返回word中第一次出现的开始和结束之间的子字符串。如果开始或结束不在word中,则函数应返回word 例如,_lettersapple,p,e之间的子字符串_应

正在做一个来自codecademy的Python部分的问题。我遇到了这个问题。我确实解决了这个问题,但后来我检查了他们的暗示,以了解和理解他们的做事方式。我真的不明白。有人能给我解释一下吗

问题是:

在接受一个名为word的字符串、一个名为start的字符和另一个名为end的字符的字母之间编写一个名为substring_的函数。此函数应返回word中第一次出现的开始和结束之间的子字符串。如果开始或结束不在word中,则函数应返回word

例如,_lettersapple,p,e之间的子字符串_应返回pl

这是他们给我的暗示,我不明白,需要解释:

首先使用word.findstart和word.findend查找开始字符和结束字符的索引

如果这些索引中的任何一个为-1,则原始字符串不包含这些字符中的任何一个,您应该返回word

如果两者都不是-1,则使用这些索引对单词进行切片。记住,切片是[包含:独占]


只是没有得到关于负指数的部分。我知道负指数是什么,但在这种情况下它有什么关系?

str.find如果找不到字符,则返回-1。他们说你应该在继续之前先检查一下这个案例。

也许下面的代码会让它更清楚-

def substring_between_letters(word, s, e):
    i = word.find(s), word.find(e)
    
    if -1 in i:
        return word
    else:
        return word[i[0]+1:i[1]]
    
print(substring_between_letters('apple', 'p','e'))
#OUTPUT - 'pl'

print(substring_between_letters('hello', 'p','e'))
#OUTPUT - 'hello'
您需要做的是获取开始索引和结束索引之间的子字符串,您可以通过执行word.find来查找该子字符串。但是由于第一个索引是包含的,而第二个索引是独占的,因此必须从start_index+1开始到end_index,才能在排除起始字符和结束字符后获得介于两者之间的字符串。如果任何字符不存在,则word.find返回-1。在这种情况下,您只需返回整个单词。

是您的朋友。如果您在尝试学习时忽略了查阅Python文档,那么过程将更加困难。