字符串索引超出范围是什么意思?
我正在用Python制作一个翻转棋游戏。这是一个空棋盘的代码
#reversi
import random
import sys
board = range(9)
def char_range(start, end, step=1):
for char in range(ord(start), ord(end), step):
yield char
def drawBoard(board):
###this prints out the board
HLINE = ' +-+-+-+-+-+-+-+-+'
VLINE = ' | | | | | | | | |'
print(' a b c d e f g h')
print(HLINE)
for y in range(8):
print(y+1, end = '|.|')
for x in char_range('a','h'):
print('| %s' %(board[x][y]), end='.')
print('|')
print(HLINE)
def resetBoard(board):
#blanks out the board
for x in char_range('a', 'h'):
for y in range(8):
board[x][y] = '.'
#starters
board[c][3] = 'X'
board[c][4] = 'O'
board[d][3] = 'O'
board[d][4] = 'X'
def getNewBoard():
#new board
board = []
for i in range(9):
board.append([' '] * 9)
return board
getNewBoard()
drawBoard(board)
resetBoard(board)
但当我运行这个代码时,出现了这个信息:
File "C:\Users\Larry\Desktop\test.py", line 18, in drawBoard
print('| %s' % (board[x][y]), end='.')
IndexError: string index out of range
这是什么意思呢?我需要修改
char_range()
还是
print('| %s' % (board[x][y]), end='.')
1 个回答
0
正如wim所说,使用字典(dict)来实现这样的棋盘通常是个不错的选择。
def getNewBoard():
#new board
board = {}
for x in range(8): # or x in 'abcdefgh': if you prefer
for y in range(8):
board[x, y] = ' '
return board
别忘了把棋盘赋值给 board
。
board = getNewBoard()