Python 我的代码中的错误:应返回bool,但返回<;类别';非类型'&燃气轮机;

Python 我的代码中的错误:应返回bool,但返回<;类别';非类型'&燃气轮机;,python,python-3.x,Python,Python 3.x,我正在做一个项目,问题是: 前两个整数是行和列,第三个和第四个整数 是另一行和另一列。最后一个参数是符号板。 如果从第一行和列单元格到 第二个行和列单元格(包括这两个单元格)不可用 完全为空,否则返回False。你可以假设 给定的行和列将形成水平或垂直路径,而不是垂直路径 对角线路径 我的代码如下所示 MIN_SHIP_SIZE = 1 MAX_SHIP_SIZE = 10 MAX_BOARD_SIZE = 10 UNKNOWN = '-' EMPTY = '.' HIT = 'X' MISS

我正在做一个项目,问题是:

前两个整数是行和列,第三个和第四个整数 是另一行和另一列。最后一个参数是符号板。 如果从第一行和列单元格到 第二个行和列单元格(包括这两个单元格)不可用 完全为空,否则返回False。你可以假设 给定的行和列将形成水平或垂直路径,而不是垂直路径 对角线路径

我的代码如下所示

MIN_SHIP_SIZE = 1
MAX_SHIP_SIZE = 10
MAX_BOARD_SIZE = 10
UNKNOWN = '-'
EMPTY = '.'
HIT = 'X'
MISS = 'M'

def is_occupied(row1, col1, row2, col2, symbol_board):

    if row1 == row2: # Checks the condition if true
        if col1 > col2: # Checks to see if column1 is greater than column 2
            return coordinates_notempty(row1, col2, col1, symbol_board) 
        else: 
            return coordinates_notempty(row1, col1, col2, symbol_board)  
    elif col1 == col2: 
        if row1 > row2: 
            return coordinates_notempty(col1, row2, row1, symbol_board) 
        else:  
            return coordinates_notempty(col1, row1, row2, symbol_board)
coordinates\u notempty
是一个如下所示的辅助函数:

def coordinates_notempty(c, c2, c3, symbol_board):
    for i in range(c2, c3):
        if symbol_board[c][i] == EMPTY:
            return False
    return True
当我在空闲状态下运行代码时,我得到一个错误,它说应该返回bool,但返回了
,但我不明白为什么

在修复语法错误后,我仍然收到应该返回bool,但返回了错误。有人建议我加一个else语句,我什么时候加的

def is_occupied(row1, col1, row2, col2, symbol_board):

    if row1 == row2: 
        if col1 > col2: 
            return coordinates_notempty(row1, col2, col1, symbol_board) 
        else: 
            return coordinates_notempty(row1, col1, col2, symbol_board) 
    elif col1 == col2: 
        if row1 > row2: 
            return coordinates_notempty(col1, row2, row1, symbol_board) 
        else:  
            return coordinates_notempty(col1, row1, row2, symbol_board)
    else:
        return True

我收到一个错误,说TypeError:列表索引必须是整数,而不是元组,请尝试
True
而不是
True
,同样地,对于
False

将其他人发现的
True
False
问题搁置一旁,您的
被占用
说明了两种可能性:
row1==row2
col1==col2
。如果两者都不是真的,则过程结束时没有返回值,得到
None


最后一件事。当您检查某个特定元素是否等于
EMPTY
时,您的
坐标\u notempty
将出现问题,但您从未定义
EMPTY
是什么。

在Python中,true和false由
true
false
表示。它们必须大写。^在此基础上,我希望出现
名称错误。请提供一个。我不认为在引用错误消息时,我如何才能更平和,至少包括最后两行,给出错误发生的行号和文本。虽然修复程序是必要的,但这并不能解决OP的直接问题。我该如何修复?在不知道您的符号板外观的情况下,或者对路径有什么要求,很难说。假设从一点到另一点有一条垂直直线(列相同)或水平直线(行相同)。你得到的错误表明这个假设是错误的。基本上,你需要回答这个问题:如果你的两点没有落在一条水平线或垂直线上怎么办?这两点之间是否只有一条路?