2014-10-15 5 views
-2

행의 n 개의 게임을 업데이트하려고합니다. 내가 배열 행렬을 업데이트하려고하면하지만 난 범위 에러 밖으로 "문자열을 얻을.파이썬 오류 : 문자열 색인이 범위를 벗어났습니다.

내가 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 

이를 내 터미널 나를 뱉어 것입니다. 당신이 str(y)matrix를 재 할당하기 때문에

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

오류가이므로 matrixstr(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

@KatyWatterniaux 왜''matrix''를''y''에 할당할까요? –

관련 문제