【问题标题】:Why do I get a TypeError only when I use the input() method?为什么只有在使用 input() 方法时才会收到 TypeError?
【发布时间】:2019-09-09 04:39:41
【问题描述】:

我正在开发井字游戏中的两个功能。 “板”是一个列表,用户使用小键盘放置他或她的标记。该数字是“板”列表的索引。

第一个函数 - 检查棋盘上是否有空位可玩 并返回一个布尔值(如果空间可用,则返回 True)。

第二个函数 - 从用户那里获取他们放置标记的输入,然后使用第一个函数检查它是否是一个空闲位置

board = ['#','X','O','X',' ','X','O','X','O','X']

def space_check(board, position):

     return board[position] == ' '

我测试它 -

space_check(board, 4)

>True


def player_choice(board):

     position = input("Player's next move")

     if space_check(board, position) == True:

          return position

错误:

TypeError: 列表索引必须是整数或切片,而不是 str

我是新来的,如果这是一团糟,我深表歉意。非常感谢您的帮助。

【问题讨论】:

  • 试试position = int(input("Player's next move"))。目前,输入值为str,但我猜你的函数需要int
  • 一个小提示:您已经发现问题出在input 的结果上,剩下要做的就是google python input,它会帮你到官方docs,它声明:函数然后从输入中读取一行,将其转换为字符串(去除尾随换行符),然后返回跨度>

标签: python typeerror


【解决方案1】:

python 中的input() 函数默认将用户输入作为str 返回。

因为这是一个字符串 - 您无法访问该列表 - 因此TypeError

这可以通过简单地将input() 语句转换为int 来解决:

position = int(input("Player's next move"))

现在,如果您尝试这个,它应该会按预期工作!

:)

【讨论】:

    【解决方案2】:

    输入的默认返回值为str类型。

    改变

    position = input("Player's next move")
    
    

    position = int(input("Player's next move"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 2013-09-08
      相关资源
      最近更新 更多