栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

扫雷(Python实现)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

扫雷(Python实现)

 输入 数据的第一行有2个整数n, m(1 <= n, m <= 50),表示一个n * m的区域,n行m列
 接下来n行每行有一个长度为m的字符串,字符串只包含2种字母,”.”和”X”
 其中”.”表示这个地方不是地雷,”X”表示这个地方是地雷。
 输出 请输出n行内容,每一行是一个长度为m的字符串,由数字和符号”X”组成,
 如果这个点不是地雷,那么就表示这个点周围有几颗地雷,否则这个点存放符号”X”,表示这个点是地雷。
 输入样例: 3 5 ..... ..XX. .....
 输出样例: 01221 01XX1 01221

# 首先输入几行几列
n, m = map(int, input().split())
# 定义空列表,后边可以看到是一个二维数组
bomb = []
# 建立扫雷区域,以及设置下炸弹处
# 遍历行数次,输入每一行的内容
# 每一行都是加入一个列表,形成二维
for i in range(n):
    bomb.append(list(input()))
# print(bomb)     #[['.', '.', '.', '.', '.'], ['.', '.', 'X', 'X', '.'], ['.', '.', '.', '.', '.']]

# 定义一个结果二维数组,初始每个位置都是0
res = [["0" for j in range(m)] for i in range(n)]


# print(res)      #[['0', '0', '0', '0', '0'], ['0', '0', '0', '0', '0'], ['0', '0', '0', '0', '0']]

# 定义函数用来对某一个位置周围的八个区域计数有几个炸弹
def check_bomb(i, j):
    # 以这个位置为中心,找到九个位置
    up = max(0, i - 1)
    down = min(n - 1, i + 1)
    left = max(0, j - 1)
    right = min(m - 1, j + 1)
    count = 0
    for i in range(up, down + 1):
        for j in range(left, right + 1):
            if bomb[i][j] == 'X':
                count += 1
    return str(count)


# 遍历二维数组进行扫雷
for i in range(n):
    for j in range(m):
        if bomb[i][j] == 'X':
            # 若该位置是炸弹,则结果二维数组该位置为炸弹
            res[i][j] = 'X'
        else:
            # 若该位置不是炸弹,则调用函数检查周围八个位置有几个炸弹
            # 结果放入结果二维数组该位置
            res[i][j] = check_bomb(i, j)

# 输出结果
for i in res:
    print(''.join(i))

运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/503558.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号