【问题标题】:Just want someone to explain to me what they exactly mean. Its a Codecademy Question只是希望有人向我解释他们的确切含义。这是一个 Codecademy 问题
【发布时间】:2020-08-09 15:56:18
【问题描述】:

正在从 codecademy 的 Python 部分做一个问题。遇到了这个问题。我确实解决了它,但后来我检查了他们的提示,以了解并理解他们的做事方式。真的没看懂。谁能给我解释一下?

这是问题:

"编写一个名为 substring_between_letters 的函数,它接受一个名为 word 的字符串、一个名为 start 的单个字符和另一个名为 end 的字符。此函数应返回 word 中第一次出现 start 和 end 之间的子字符串。如果 start 或 end 是不在 word 中,函数应该返回 word。”

例如,substring_between_letters("apple", "p", "e") 应该返回 "pl"

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

"首先使用 word.find(start) 和 word.find(end) 查找开始和结束字符的索引。

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

如果两者都不是 -1,则使用这些索引对单词进行切片。请记住,切片是 [inclusive:exclusive]!”

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

【问题讨论】:

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

标签: python string substring


【解决方案1】:

str. find 如果找不到字符,则返回 -1。他们说你应该先检查那个案例,然后再继续。

【讨论】:

    【解决方案2】:

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

    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。在这种情况下,您可以简单地返回整个单词。

    【讨论】:

      猜你喜欢
      • 2016-02-19
      • 2014-10-23
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      相关资源
      最近更新 更多