函数find()无法识别

2024-04-29 05:35:04 发布

您现在位置:Python中文网/ 问答频道 /正文

find()在我的代码中不起作用

我不知道为什么find()不能识别字母。 下面是我的代码

def search(Object, maze_row, letter) :
        Object[0] += 1
        Object[1] = maze_row.find(letter)

def main() :
    row_col = "5 5"
    input_maze = "#####\n#..B#\n#.#.#\n#RO.#\n#####"

    maze = input_maze.split('\n')
    red_ball = [-1,-1]
    blue_ball = [-1,-1]
    hole = [-1,-1]

    for maze_row in maze :
        search(red_ball, maze_row,'R')
        search(blue_ball, maze_row,'B')
        search(hole, maze_row,'O')
        if(red_ball[1] >= 0 and blue_ball[1] >= 0 and hole[1] >= 0) :
            break

    print(red_ball, blue_ball, hole)


if __name__ == '__main__' :
    main()

结果是([4,-1],[4,-1],[4,-1])


Tags: 代码inputsearchifobjectmaindefblue
2条回答

find()正在找到你的信

但是,在随后的for maze_row in maze循环中,由于在下一行中找不到元素,它将Object[1]设置回-1

您可以通过多种方式解决此问题,最简单的方法是更改搜索功能:

def search(Object, maze_row, letter) :
    Object[0] += 1
    if Object[1] == -1:
        Object[1] = maze_row.find(letter)

编辑:缩进

find没有问题

问题是,即使在找到匹配项并设置了正确的索引之后,代码仍会在行上循环

唯一能从循环中中断的条件是三个字母RBO都出现在同一行中,这显然是不可能的

因此,当您尝试打印这三个变量时,您将看到最后一行的结果,其中不包含任何目标字母

如果您创建一个函数来搜索迷宫中字母的行和列,会更简单:

def search(maze, target):
    for i, row in maze:
        j = row.find(target)
        if j != -1:
            return i, j
    return -1, -1

red_ball = search(maze, 'R')

相关问题 更多 >