2014-10-15 2 views
-2

Я пытаюсь обновить игру n в строке. Но когда я пытаюсь обновить матрицу массива я получаю «строку из ошибок диапазона.Ошибка Python: индекс строки вне диапазона

Я сделал то время как заявление с ind < len(board_height).

Что я здесь делаю неправильно?

Traceback (most recent call last): 
    File "matrix.py", line 61, in <module> 
    drop_disk(print_board(1)) 
    File "matrix.py", line 23, in print_board 
    (matrix[0][4]) + " " + str(matrix[0][5]) + " " + str(matrix[0][6]) +" |") 
IndexError: string index out of range 

Этот это то, что мой терминал плюет на меня.

import tkinter 


def print_board(y): 
    """Prints the board""" 
    matrix = [ 
    [0,0,0,0,0,0,0], 
    [0,0,0,0,0,0,0], 
    [0,0,0,0,0,0,0], 
    [0,0,0,0,0,0,0], 
    [0,0,0,0,0,0,0], 
    [0,0,0,0,0,0,0], 
    [0,0,0,0,0,0,0]] 

    matrix = str(y) 

    print("\n") 
    print("| " + str(matrix[0][0]) + " " + str(matrix[0][1]) + " " + str(matrix[0][2]) + " " + str(matrix[0][3]) + " " + str 
    (matrix[0][4]) + " " + str(matrix[0][5]) + " " + str(matrix[0][6]) +" |") 
    print("| " + str(matrix[1][0]) + " " + str(matrix[1][1]) + " " + str(matrix[1][2]) + " " + str(matrix[1][3]) + " " + str 
    (matrix[1][4]) + " " + str(matrix[1][5]) + " " + str(matrix[1][6]) +" |") 
    print("| " + str(matrix[2][0]) + " " + str(matrix[2][1]) + " " + str(matrix[2][2]) + " " + str(matrix[2][3]) + " " + str 
    (matrix[2][4]) + " " + str(matrix[2][5]) + " " + str(matrix[2][6]) +" |") 
    print("| " + str(matrix[3][0]) + " " + str(matrix[3][1]) + " " + str(matrix[3][2]) + " " + str(matrix[3][3]) + " " + str   (matrix[3][4]) + " " + str(matrix[3][5]) + " " + str(matrix[3][6]) +" |") 
    print("| " + str(matrix[4][0]) + " " + str(matrix[4][1]) + " " + str(matrix[4][2]) + " " + str(matrix[4][3]) + " " + str  (matrix[4][4]) + " " + str(matrix[4][5]) + " " + str(matrix[4][6]) +" |") 
    print("| " + str(matrix[5][0]) + " " + str(matrix[5][1]) + " " + str(matrix[5][2]) + " " + str(matrix[5][3]) + " " + str   (matrix[5][4]) + " " + str(matrix[5][5]) + " " + str(matrix[5][6]) +" |") 
    print("| " + str(matrix[6][0]) + " " + str(matrix[6][1]) + " " + str(matrix[6][2]) + " " + str(matrix[6][3]) + " " + str  (matrix[6][4]) + " " + str(matrix[6][5]) + " " + str(matrix[6][6]) +" |") 
    print("="*17) 
    return matrix 

def drop_disk(matrix): 
    "Drops the disk in one of the seven columns" 
    board_height = 7 
    empty = 0 
    row = 0 
    col = 0 
    ind = 0 

    player1 = input("Wat is de naam van speler 1?\n") 
    player2 = input("Wat is de naam van speler 2?\n") 


    column = int(input(player1 + ", In welke colom wil je je stuk laten vallen (1-7)?\n")) 
    while ind < len(board_height): 
     for y in range(board_height): 
      if matrix[row][col] == empty: 
       y = matrix[row -1][col -1] = 1 
       ind += 1 
      return y 
     return -1 

drop_disk(print_board(1)) 
print_board(1) 
+0

Я слышал на петлях, но не уверен, как реализовать это в данном случае. –

ответ

1

ошибка происходит потому, что вы переназначение matrix к str(y) , поэтому matrix изменяется на str(y), что на самом деле '1'.

drop_disk(print_board(1)) # называет print_board(1) и устанавливает y = '1'

def print_board(y): # assign y='1' 
matrix = [ 
[0,0,0,0,0,0,0], 
[0,0,0,0,0,0,0], 
[0,0,0,0,0,0,0], 
[0,0,0,0,0,0,0], 
[0,0,0,0,0,0,0], 
[0,0,0,0,0,0,0], 
[0,0,0,0,0,0,0]] 

matrix = str(y) # matrix = 1 
+0

Спасибо, что ответили так скоро на мой вопрос. Итак, я обновляю матрицу, чтобы напечатать новую ситуацию? Я все еще очень новичок в Pyhon и программировании. Вся помощь приветствуется. –

+0

Итак, вместо изменения индекса в массиве я просто изменяю весь массив на 1? –

+0

@KatyWatterniauxPeeters почему вы назначаете '' matrix'' '' y''? –

Смежные вопросы