在Python中查找最后一个位置

时间:2018-04-08 17:39:31

标签: python

我正在学习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

谢谢。

1 个答案:

答案 0 :(得分:3)

您需要修复几个错误:

  1. target是目标字符串,而不是您找到它的位置。你正在覆盖这个价值。
  2. 您可能需要多次致电search.find
  3. 只有在search.find返回-1时才会中断循环。然后,您的函数应返回search.find返回的之前的值。
  4. 修复每个问题都会给你

    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)已经做了你想做的事。