这是codecademy上的一个练习,一切进展顺利,直到这一部分的最后一步:
from random import randint
board = []
for x in range(0, 5):
board.append(["O"] * 5)
def print_board(board):
for row in board:
print " ".join(row)
print_board(board)
def random_row(board):
return randint(0, len(board) - 1)
def random_col(board):
return randint(0, len(board[0]) - 1)
ship_row = random_row(board)
ship_col = random_col(board)
guess_row = int(raw_input("Guess Row:"))
guess_col=int(raw_input("Guess Col:"))
print ship_row
print ship_col
if guess_row == ship_row and guess_col == ship_col:
print "Congratulations! You sank my battleship!"
else:
print "You missed my battleship!"
board[guess_row][guess_col] = "x"
print_board(board)
倒数第二行,其实就是如果猜错了,就把这个错误的位置的O换成X。
我这个说有问题。分别减一,也不行。 求帮忙!
debug结果出来了:倒数第二行的x是小写。codecademy非要要求大写!就这么个小区别!哎。。。。。。
已帮你把代码编辑了一下, 运行之后没有问题呀?
你是想说 它标的位置不对? 不是第三行, 第一列? 而是第四行第二列?
如果是这样的话,你可能还没明白 数组的下标是从 0 开始的, 如果你要标到你所要的位置上, 可能要在原来的数字上 减 1.
还有在标 X
的时候 判断一下输入的数字 是不是超过 你的数组的大小了.
下面为减1后的效果:
再次提醒一下, 在设置
X
之前, 先检测 输入的数字是否超过board
的范围了, 你这里的是5,
你需要判断guess_row
和guess_col
的值是否在 1到5之间(含1和5).
只有在这个范围内的数字才是有效的.