列表索引迭代错误

时间:2015-06-11 04:27:11

标签: python

我对编程完全陌生。我正在尝试制作一个游戏,其中我有一个列表列表,作为玩家玩游戏的板子“GO'。日本游戏,其中玩家在棋盘中占据空间,如果空间被两个敌人空间包围,则另一个玩家占据该空间。我用' R'代表它。和' O'模拟玩家的作品。

这里的问题是当我尝试通过水平索引来使用另一个替换玩家棋子的算法时,到目前为止的代码如下:

R = "R"
O = "O"
matrix = [[[" "] for i in range(10)] for i in range(10)]

def doBoard():
    for i in matrix:
        print "\n%r" % i 

def pickR():
    print "Select the column and row you want to take: \n"
    column = int(raw_input("Column: > "))
    row = int(raw_input("Row: > "))
    matrix[column][row] = "R"

def pick0():
    print "Select the column and row you want to take: \n"
    column = int(raw_input("Column: > "))
    row = int(raw_input("Row: > "))
    matrix[column][row] = "O"

def selector():
    for i in matrix:
        for j in i:
            if j == "R" and matrix[j+2] == "R":
                matrix[j+1] = "R"
            if j == "O" and matrix[j+2] == "R":
                matrix[j+1] = "O" 

在最后一行我收到错误

  

无法连接' int'和' str'元素。

我知道这里发生的事情是我获取了位于索引j中的字符串,并尝试向其添加2,但我想获得索引j加上两个空格,或者两个索引转发。我在这里搜索了其他问题并且无法绕过它,我该怎么做?

1 个答案:

答案 0 :(得分:-1)

def selector():
    for i in matrix:
        for j in i:
            if j == "R" and matrix[j+2] == "R":
                matrix[j+1] = "R"
            if j == "O" and matrix[j+2] == "R":
                matrix[j+1] = "O" 

在您的代码j中是矩阵的元素。因此,当您编写matrix[j+2]时,j将不是整数,并将其与2连接将产生以下错误:

Cannot concatenate 'int' and 'str' elements.

我觉得这对你有用!

def selector():
    for i in range(len(matrix)):
        for j in range(len(matrix)):    
            if matrix[j] == "R" and matrix[j+2] == "R":
                matrix[j+1] = "R"
            if matrix[j] == "O" and matrix[j+2] == "R":
                matrix[j+1] = "O" 

这里j是一个整数,可以用作索引。