扫雷/python中*解包作用

2023-12-14 22:43:02


题目描述
在一个n行m列的方格图上有一些位置有地雷,另外一些位置为空。
请为每个空位置标一个整数,表示周围八个相邻的方格中有多少个地雷。
输入描述
输入的第一行包含两个整数n,m。
第2行到第n+1行每行包含m个整数,相邻整数之间用-个空格分隔。如果对应的整数为 0,表示这一格没有地雷。如果对应的整数为1,表示这一格有地雷
其中,1<n,m<100分钟后还是在当天
输出描述
输出n行,每行m个整数,相邻整数之间用空格分隔
对于没有地雷的方格,输出这格周围的地雷数量。对于有地雷的方格,输出9。

import os
import sys

# 请在此输入您的代码
n,m=map(int,input().split())
s=[list(map(int,input().split())) for i in range(n)]  #输入的数据
a=[[0]*m for i in range(n)]  #要输出的地图
for i in range(n):
  for j in range(m):
    if s[i][j] ==1:  #有地雷
      a[i][j]=9
      continue
    cnt=0
    if s[i][j] ==0:#没有地雷
      for i1 in range(i-1,i+2):
        for j1 in range(j-1,j+2):
          if 0<=i1<n and 0<=j1<m:
            if s[i1][j1]==1:
              cnt+=1
      a[i][j]=cnt
for i in a:
  print(*i)




输出:

3 4
0 1 0 0
1 0 1 0
0 0 1 0
2 9 2 1
9 4 9 2
1 3 9 2

在Python中,*是一种解包操作符(asterisk unpacking operator)。在print(*i)中,它用于解包列表i的元素。

当我们使用print函数打印一个列表时,通常会打印出列表的表示形式,其中元素之间用逗号分隔,并且列表被方括号包围。但是,如果我们希望打印出列表的元素本身,而不是列表的表示形式,就可以使用*解包操作符。

通过在print函数中使用*i*会解包列表i的元素,将它们作为独立的参数传递给print函数。这样,print函数会以空格作为分隔符打印出列表的元素。

a = [1, 2, 3]
print(*a)

输出将是:

1 2 3

而不是:

[1, 2, 3]

文章来源:https://blog.csdn.net/weixin_72050316/article/details/135004862
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。