You need to enable JavaScript to run this app. Python开发终端版扫雷:周边炸弹计数错误、生成数量不符问题排查
优惠活动
大模型
产品
解决方案
定价
更多

Python开发终端版扫雷:周边炸弹计数错误、生成数量不符问题排查

问题排查与修正

炸弹数量不足的成因

  • 随机位置生成参数错误:random.randrange(0, dim_size-1)的stop参数不包含边界,dim_size=5时仅能生成0~3的索引,遗漏最后一行/列的位置。正确参数应为random.randrange(0, dim_size),覆盖全部0~dim_size-1的索引范围。
  • 无去重逻辑:若随机到已存在炸弹的位置,直接覆盖原有标记,导致实际炸弹数小于预设值。需在放置炸弹前判断位置是否已被占用,重复则重新生成随机位置。

相邻计数错误的成因(含右上格子)

所有相邻方向的边界判断逻辑均存在问题:

  • 右上格子(行-1、列+1)的判断条件写反:原代码为random_column > dim_size,该条件永远不成立(列索引最大为dim_size-1),导致右上计数从未执行。
  • 其余方向的边界判断未考虑偏移后不越界的要求:
    • 右(列+1):原条件random_column < dim_size,易导致索引越界,需改为random_column < dim_size -1
    • 右下(行+1、列+1):原条件random_row < dim_size and random_column < dim_size,需改为random_row < dim_size -1 and random_column < dim_size -1
    • 下(行+1):原条件random_row < dim_size,需改为random_row < dim_size -1
  • 计数逻辑顺序错误:原代码每放置一个炸弹就为周围格子加1,若后续在这些格子上放置炸弹,会覆盖之前的计数,导致统计错误。正确逻辑为:先全部生成炸弹位置并标记,再统一遍历所有非炸弹格子,统计周围的炸弹数量。

修正后代码

import random

def minesweeper(dim_size, num_bombs):
    # 初始化棋盘
    board = [[0 for _ in range(dim_size)] for _ in range(dim_size)]
    bomb_pos = set()

    # 生成不重复的炸弹位置
    while len(bomb_pos) < num_bombs:
        row = random.randrange(0, dim_size)
        col = random.randrange(0, dim_size)
        bomb_pos.add((row, col))

    # 标记炸弹位置
    for r, c in bomb_pos:
        board[r][c] = 'X'

    # 统一统计相邻炸弹数
    for row in range(dim_size):
        for col in range(dim_size):
            if board[row][col] == 'X':
                continue
            count = 0
            # 遍历8个相邻方向
            for dr in (-1, 0, 1):
                for dc in (-1, 0, 1):
                    if dr == 0 and dc == 0:
                        continue
                    nr, nc = row + dr, col + dc
                    # 仅统计棋盘范围内的炸弹
                    if 0 <= nr < dim_size and 0 <= nc < dim_size and board[nr][nc] == 'X':
                        count += 1
            board[row][col] = count

    # 打印棋盘
    for row in range(dim_size):
        print('\t'.join(map(str, board[row])))

if __name__ == '__main__':
    minesweeper(5,5)

内容的提问来源于stack exchange,提问作者user15427949

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 06:54:10