import pandas as pd
import os
import random
try: # 用户设置(n和m,均为正整数)
str_a = (r"""设置雷区的列,行,平均每列雷的个数。三个正整数,并用英文空格隔开。
例如: 15 15 3
注,第三个数小于第一个数,否者会出错。
""")
n1, n2, m = input(str_a).split(" ")
n1, n2, m = int(n1), int(n2), int(m)
except:
print("输入参数有误,按默认参数执行: 15 15 3")
n1, n2, m = 15, 15, 3
def sum_lei(x, y): # 调用dict_rand中数据,统计(x, y)周围雷的个数
sum_xy = 0 # 存储(x, y)周围雷的个数
for i in range(x-1, x+2):
for j in range(y-1, y+2):
if i in range(n1) and j in range(n2) and dict_rand[(i, j)] == "*":
sum_xy += 1
return sum_xy
path = r"{}\扫雷.xlsx".format(os.getcwd()) # 获取路径(相对路径+文件名)
list_rand = [((i, j), random.random()) for i in range(n1) for j in range(n2)] # 生成元组((x,y),v)列表
list_rand.sort(key=lambda v: v[1]) # 按照元组的第二个元素进行排序
dict_rand = {k: ("*" if v < list_rand[m*n2][1] else "") for (k, v) in list_rand} # 前m*n2为雷,其它位置为空,并存为字典
data = pd.DataFrame([[""]*n2]*n1) # 生成空的二维数据表
for (x, y), v in dict_rand.items(): # 统计周围雷的个数,并转为二维数据表
data.loc[x, y] = "*" if v == "*" else sum_lei(x, y)
data.to_excel(path) # 数据写入EXCEL
print("{}×{}区域,{}%的雷(共{}个雷),配置完成,并写入EXCEL。".format(n1, n2, int(m/n1*100), n2*m)) # 提醒完成
import os
import random
try: # 用户设置(n和m,均为正整数)
str_a = (r"""设置雷区的列,行,平均每列雷的个数。三个正整数,并用英文空格隔开。
例如: 15 15 3
注,第三个数小于第一个数,否者会出错。
""")
n1, n2, m = input(str_a).split(" ")
n1, n2, m = int(n1), int(n2), int(m)
except:
print("输入参数有误,按默认参数执行: 15 15 3")
n1, n2, m = 15, 15, 3
def sum_lei(x, y): # 调用dict_rand中数据,统计(x, y)周围雷的个数
sum_xy = 0 # 存储(x, y)周围雷的个数
for i in range(x-1, x+2):
for j in range(y-1, y+2):
if i in range(n1) and j in range(n2) and dict_rand[(i, j)] == "*":
sum_xy += 1
return sum_xy
path = r"{}\扫雷.xlsx".format(os.getcwd()) # 获取路径(相对路径+文件名)
list_rand = [((i, j), random.random()) for i in range(n1) for j in range(n2)] # 生成元组((x,y),v)列表
list_rand.sort(key=lambda v: v[1]) # 按照元组的第二个元素进行排序
dict_rand = {k: ("*" if v < list_rand[m*n2][1] else "") for (k, v) in list_rand} # 前m*n2为雷,其它位置为空,并存为字典
data = pd.DataFrame([[""]*n2]*n1) # 生成空的二维数据表
for (x, y), v in dict_rand.items(): # 统计周围雷的个数,并转为二维数据表
data.loc[x, y] = "*" if v == "*" else sum_lei(x, y)
data.to_excel(path) # 数据写入EXCEL
print("{}×{}区域,{}%的雷(共{}个雷),配置完成,并写入EXCEL。".format(n1, n2, int(m/n1*100), n2*m)) # 提醒完成