根据我是否使用函数获取TypeError

时间:2017-06-10 11:54:02

标签: python typeerror

我在tic-tac-toe游戏中不断收到此错误:TypeError: unsupported operand type(s) %:< “list''int'”。

我有一个“turn”变量来计算已经过的回合数,并且有一个充当棋盘的字符串列表。

鉴于此代码:

def x_or_o(t):
    """Check the number of turns for an even number and return a string."""
    if t % 2 == 0:
        return 'O'
    else:
        return 'X'

def place_char(i, t, brd):
    """Change the value of an item in the board list from an 'e' to an 'X' or
    'O'."""
    brd[int(i) - 1] = '{}'.format(x_or_o(t))

def turn(t, brd):
    """Read player input and print symbol onto the board."""
    print("Player {}'s turn.".format(x_or_o(t)))
    p_input = input('1-9: ')
    check_quit(p_input)
    if brd_empty(p_input, brd):
        place_char(p_input, brd, x_or_o(t))
        # brd[int(p_input) - 1] = '{}'.format(x_or_o(t))
    ...

当我在place_char()的{​​{1}}语句中使用if时,我得到turn()。但是,当我将TypeError的行直接复制并粘贴到place_char()时,我的代码运行正常。

为什么在使用该功能时会出现错误,但在使用该功能的代码时却没有?

1 个答案:

答案 0 :(得分:0)

def place_char(i, brd, xo):
    """Change the value of an item in the board list from an 'e' to an 'X' or
    'O'."""
    brd[int(i) - 1] = '{}'.format(xo)

您可以尝试使用此方法替换place_char方法。

方法中的错误:

  • 在您的方法签名place_char(i, t, brd)中订单不同
  • 您在x_or_ot再次呼叫place_char,但您已将x_or_o(t)的输出传递给place_char方法