【问题标题】:builtins.TypeError: list indices must be integers or slices, not listbuiltins.TypeError:列表索引必须是整数或切片,而不是列表
【发布时间】:2019-06-17 00:00:41
【问题描述】:

问题是:
编写一个函数get_column(game, col_num),按照上面的说明进行合法的 3 x 3 无子和十字架游戏,并返回一个 3 元素列表,其中包含从上到下的列号 col_num 的值。您可以假设 col_num 在 0 到 2 的范围内。
提示:由于 noughts 和 crosss 总是在 3 x 3 网格上播放,因此您不需要处理一般的 n x m 网格。只需显式选择您需要的行和列元素就足够了,因此您实际上不需要针对此问题进行循环。不过,欢迎您尝试使用循环来进行更多练习。

因此我想从列表中检索我在函数中提到的任何列。

下面的代码是我试过的

def get_column(game, col_num):
    """returns a 3-element list containing the values from column number 
    col_num, top to bottom"""
    j = col_num
    result = []
    for i in game:
        result.append(game[i][j])
    return result

【问题讨论】:

  • 无法在我发布的上述问题中添加这些点。因此在这里添加 board = [['O', 'X', 'O'], ['X', ' ', ' '], ['X', ' ', ' ']] column1 = get_column(board, 0) print(column1) 预期的答案是:['0','x','x'] 但我得到的错误是:“builtins.TypeError:列表索引必须是整数或切片,而不是列表”请帮忙! !

标签: python-3.x


【解决方案1】:

我不会尝试为你解决你的练习,但我可以告诉你为什么你会收到错误。

你的循环

for i in game:

循环遍历 3x3 列表。所以会循环3次,即

i = ['O', 'X', 'O']         # pass 1
i = ['X', '','']            # pass 2
i = ['X', '','']            # pass 3

所以 i 是一个列表。然后,您尝试使用 i 来索引此语句中的列表

result.append(game[i][j])

但列表必须使用单个整数(o、1 或 2)或切片(如 0:1、1:2 等)进行索引。

【讨论】:

  • 感谢@Deepstop,这仍然无法正常工作:-------------------------------- --------------def对角线(游戏):“”“”“结果= [] for i in range(len(game)):j = i result.append(游戏[ i][j]) 返回结果
  • @Manju 这是一个不同的函数,它返回从左上角到右下角的对角线,没有错误。因此,您关于错误的原始问题已得到解答。如果您想修复原始问题中的函数,则将 for i in range(len(game)) 循环从您的评论应用到 get_column 函数。如果您遇到其他问题,请提出另一个问题。
猜你喜欢
  • 2016-09-16
  • 2017-10-01
  • 1970-01-01
  • 2017-06-08
  • 2016-05-25
  • 2019-07-04
  • 2016-09-19
  • 2017-10-09
相关资源
最近更新 更多