【问题标题】:Type-error in Python: 'function' object is not supscriptable in PythonPython 中的类型错误:“函数”对象在 Python 中不可下标
【发布时间】:2020-08-12 12:40:06
【问题描述】:

我一直在进行井字游戏分配,这是我在以下代码中遇到的错误(“函数”对象在 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')

【问题讨论】:

  • 试试check(testboard,'X')

标签: python python-3.x function typeerror


【解决方案1】:

没有什么可以下标的。 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

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

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

【讨论】:

    【解决方案2】:

    你的问题在这里:

    check(dboard,'X')
    

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

    check(testboard,'X')
    

    【讨论】:

    • 非常感谢!!
    猜你喜欢
    • 2017-02-19
    • 1970-01-01
    • 2020-12-10
    • 2020-03-26
    • 2018-02-27
    • 2012-04-04
    • 2012-01-03
    • 1970-01-01
    相关资源
    最近更新 更多