21计科程一帆


私信TA

用户名:uq_88617846948

访问量:5231

签 名:

搞哥毛哥在上,俺寻思俺是一个最大最强的技术小子

等  级
排  名 959
经  验 3415
参赛次数 2
文章发表 52
年  龄 19
在职情况 学生
学  校 石河子大学
专  业 计算机科学与技术

  自我简介:

憨憨一个,欢迎大佬指正

解题思路:由于这一题需要判断每个点的情况并且决定是否增加数值,因此需要利用二维列表依次进行判断,不能使用一维列表直接存一段字符串,这里将非雷的元素全部替换为0,对每一个雷进行判断,周围的位置如果有非雷点就对其加一


注意事项:全是小错误,要多练习,多debug,笔者翻过的错误点标注在注释里了,感兴趣的看一下,自己也要注意

参考代码:

d=1
while True:
   n,m=map(int,input().split())
   c=[]
   if n==0 and m==0:
       break
   else:
       for i in range(n):
           a=input()
           b=[]#忘了更新这个
           for j in a:
               b.append(j)
           c.append(b)
       for i in range(n):
           for j in range(m):
               if c[i][j]=='.':
                   c[i][j]=0#=写成==
       for i in range(n):
           for j in range(m):
               if c[i][j]=='*':
                   if j>=1 and c[i][j-1]!='*':
                       c[i][j-1]+=1
                   if  j<=m-2 and c[i][j+1]!='*':#下标从0开始,最大到n-1,m-1
                       c[i][j+1]+=1
                   if  i>=1 and c[i-1][j]!='*':#if语句从左到右依次进行判断,限定条件应在最左边防止超限
                       c[i-1][j]+=1
                   if  i<=n-2 and c[i+1][j] !='*':
                       c[i + 1][j]+=1
                   if    i>=1 and j>=1 and c[i-1][j-1] !='*':
                       c[i - 1][j - 1]+=1
                   if    i<=n-2 and j >= 1 and c[i+1][j - 1] !='*':
                       c[i + 1][j - 1]+=1
                   if    i >= 1 and j<=m-2 and c[i - 1][j + 1] !='*':
                       c[i - 1][j + 1]+=1
                   if    i <=n-2 and j <= m-2 and c[i + 1][j + 1] !='*':
                       c[i + 1][j + 1]+=1

       print('Field #'+str(d)+':')#不要忘了这地方还有个冒号
       d+=1#每一遍更新b还怎么标序号,不能更新b
       for i in c:
           e=''.join(str(j) for j in i)#‘’.join不接受元素有整型的情况,得用命令+for循环形式全给他改成str类型
           print(e)
       print()

 

0.0分

1 人评分

  评论区

  • «
  • »