用于查找字符串中第一个应计索引和最后一个应计索引的代码

问题描述 投票:0回答:2

我想编写两个函数,一个函数返回字符串中第一个应计索引的位置,另一个函数返回索引最后一次积聚的位置。例如:

index_first('Cats go meow','g') 

它将返回:5

index_last('Cats go meow','o')

它将返回:1

并且如果它不在函数中,它将返回-1我该怎么做?

我已经为第一个索引编写了一些代码,但是如果索引不在字符串中,它将不会返回-1。我已将其粘贴到下面。

def index_first(string,str_letter):
  r = 0
  for i in string:
    if i != str_letter:
      r += 1
    elif i == str_letter:
      return r
    else:
      return -1

如果输入为'Cats go meow','z'我希望它会说-1,但它根本不发送消息。

python
2个回答
0
投票
您不应在上面的缩进中放入-1
def index_last(string,str_letter):
    r = 0
    for i in string[::-1]:
        if i != str_letter:
            r += 1
        elif i == str_letter:
            return len(string) - r
    return -1

对于另一种情况,只需反转字符串并执行len(string) - r


0
投票
def index_first(string,str_letter): r = 0 for i in string: if i == str_letter: return r r += 1 return -1 # only return -1 once you checked all indexes

顺便说一句,该逻辑可以浓缩为:

def index_first(string, str_letter):
    return next((i for i, r in enumerate(string) if r == str_letter), -1)

0
投票
def index_first(string,str_letter): try: return string.index(str_letter) except ValueError: return -1 def index_last(string,str_letter): try: return string.rindex(str_letter) except ValueError: return -1
© www.soinside.com 2019 - 2024. All rights reserved.