Python中的Typeerror:Python中不支持“函数”对象

2024-05-16 00:05:47 发布

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

我一直在做一个tic-tac-toe赋值,这是我在以下代码中遇到的错误('function'对象在Python中不是子分类的):

testboard = ['0','X','O','X','O','X','O','X','O','X']
def dboard(board):
    print(board[7] +'|' + board[8] + '|' + board[9])
    print('-------')
    print(board[4] +'|' + board[5] + '|' + board[6])
    print('-------')
    print(board[1] +'|' + board[2] + '|' + board[3])
def choose():
    marker = ''
    while marker != 'X' and marker != 'O':
        marker = input('Player 1! Choose X or O ').upper()
    if marker == 'X':
        return ('X','O')
    else:
        return ('O','X')
def place(board,mark,position):
    board[position]=mark
def check(board,mark):
    if(board[7] == board[8] == board[9] == mark) or (board[1] == board[2] == board[3] == mark) or (board[4] == board[5] == board[6] == mark):
        return 'All rows are equal. You Win!'
    else:
        return 'Losers! Continue please' 

dboard(testboard)
check(dboard,'X')

Tags: orboardreturnifdefcheckpositiontic
2条回答

没有什么可下标的dboard只是一个函数

>>> dboard
<function dboard at 0x000001D4DB2CAE50>
>>> dboard[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'function' object is not subscriptable

您需要将测试板列表传递到函数check(testboard, 'X'),而不是dboard函数。列表是可下标的,它是您要下标的列表

>>> check(testboard,'X')
'Losers! Continue please'
>>>

你的问题在于:

check(dboard,'X')

dboard是一个函数,而不是引用当前板的变量。您可以改为使用这样的函数测试测试板

check(testboard,'X')

相关问题 更多 >