我正在学习Python,我试图在没有len()
的情况下解决这个问题,但我仍然陷入困境。这是一个测验解释。
定义一个作为输入的过程find_last 两个字符串,一个搜索字符串和一个目标字符串, 并返回搜索字符串中的最后一个位置 出现目标字符串的位置,如果存在则为-1 不会发生。
示例:find_last('aaaa','a')返回3
确保您的程序有一个return语句。
这是我的代码:
def find_last(search, target):
target = search.find(target)
while target:
if target == -1:
return target
else:
return target +1
return target
谢谢。
答案 0 :(得分:3)
您需要修复几个错误:
target
是目标字符串,而不是您找到它的位置。你正在覆盖这个价值。search.find
search.find
返回-1时才会中断循环。然后,您的函数应返回search.find
返回的之前的值。修复每个问题都会给你
def find_last(search, target):
# Find the first occurrence of target
pos = search.find(target)
# If you found something, keep looking for it until you don't
# find it again
while pos >= 0:
# You found target once; now look for the next occurrence
next_pos = search.find(target, pos + 1)
if next_pos == -1:
# no more targets, so stop looking
break
pos = next_pos
return pos
您也可以使用return pos
代替break
。
正如评论中指出的那样,search.rfind(target)
已经做了你想做的事。