我想编写两个函数,一个函数返回字符串中第一个应计索引的位置,另一个函数返回索引最后一次积聚的位置。例如:
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,但它根本不发送消息。
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
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)
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