具体代码如下
#雷区生成
import sys
import random
#设定雷区的大小
M = int(input('请输入雷区的长度: '))
N = int(input('请输入雷区的高度: '))
lei_born = [[0 for i in range(M)] for i in range(N)]
#设定雷的数目
I = int(input('请输入雷的个数: '))
while I > M*N-1 or I < 1:
if I > M*N-1:
I = int(input('雷的数目设置的太多了,请重新输入: '))
if I < 1:
I = int(input('雷的数目怎么可能小于一呢,请重新输入: '))
#获取第一个点以便将其排除在雷区之外
m = int(input('请输入第一个点的横坐标: '))
while m > M or m < 1:
m = int(input('超出雷区,请重新输入横坐标: '))
n = int(input('请输入第一个点的纵坐标: '))
while n > N or n < 1:
n = int(input('超出雷区,请重新输入纵坐标: '))
print('获取到的第一个要扫描的坐标为: ({:d},{:d})'.format(m,n))
#利用随机数生成雷区
for i in range(I):
m1 = random.randint(1,M)
n1 = random.randint(1,N)
if m1 == m and n1 == n:
i -= 1
continue
if lei_born[m1][n1] == 9:
i -= 1
continue
lei_born[m1][n1] = 9
for i in range(N):
print(lei_born[i])
调试下if lei_born[m1][n1] == 9:这个m1 n1都是多少,是否越界
生成的地雷超出了雷区范围,看一下你的m1he n1应该是超出开始设置的雷区范围
这个问题……虽然我没有完整看你的代码,我认为你是不太清楚,python以及大多数的语言,数组下标是从0开始的,不是从1开始,你检查下你的代码是不是相当然从1开始了