【发布时间】:2014-12-12 14:24:30
【问题描述】:
我正在用 python 开发一个简单的扫雷游戏,并试图创建一个将地雷插入空板的函数。
注意,板子是列表形式的,如下:
[[col, col, col...],[col,col,col...],[...],[...]...]
我的函数如下所示:
def insert_mines(NUM_MINES):
for mine in range(NUM_MINES):
rand_row = randint(0, NUM_ROWS - 1)
rand_col = randint(0, NUM_COLS - 1)
if BOARD[rand_row][rand_col] == 'O':
BOARD[rand_row][rand_col] = 'X'
NUM_MINES = NUM_MINES - 1
else:
BOARD[rand_row][rand_col] = 'X'
print NUM_MINES
当我使用 num_mines = 96 运行它时,它从不打印零,如果所有地雷都已插入,它应该打印的内容。
这可能是什么原因?
请注意,“X”代表一个地雷,“O”只是一个没有地雷的棋盘空间。
【问题讨论】:
-
顺便说一句,最统一的分配地雷的方法是将所需数量的地雷放在网格的前面,然后将整个地雷洗牌。
-
不保证在 96 次迭代后所有空白空间都会被选中并替换为我的,因为采样是在网格上均匀进行的;即采样索引可能会重复。
标签: python list loops for-loop random