Python矩阵正在函数外重置
我正在尝试建立一个系统,为一个基本的战舰游戏随机生成舰船位置。为了表示网格,我使用嵌套列表。但是,一旦函数完成,矩阵就会恢复到运行函数之前的状态 正如您通过运行此代码所看到的,当在函数中打印时,整个矩阵按预期工作,但之后不会。这是我第一次尝试建立自己的程序,我从来没有被困在这个很久以前。谢谢Python矩阵正在函数外重置,python,list,matrix,Python,List,Matrix,我正在尝试建立一个系统,为一个基本的战舰游戏随机生成舰船位置。为了表示网格,我使用嵌套列表。但是,一旦函数完成,矩阵就会恢复到运行函数之前的状态 正如您通过运行此代码所看到的,当在函数中打印时,整个矩阵按预期工作,但之后不会。这是我第一次尝试建立自己的程序,我从来没有被困在这个很久以前。谢谢 import random row, column = 10, 10; Matrix = [[0 for x in range(row)] for y in range(column)] ships
import random
row, column = 10, 10;
Matrix = [[0 for x in range(row)] for y in range(column)]
ships = {'battleship':5, 'cruiser':4,'destroyer':3}
any_left = 1
def position_ship(type):
row, column = 10, 10;
Matrix = [[0 for x in range(row)] for y in range(column)]
ship_size_to_assign = type
start_pointV = 5 ### random.randint(0,10)
start_pointH = 5 ### random.randint(0,10)
start_point_direction = 1 ###random.randint(0,4)
print start_pointV
print start_pointH
print start_point_direction
start_point_direction = 1
if start_point_direction == 1:
n = 0
if (start_pointV + type) <= 10:
while ship_size_to_assign != 0:
Matrix[(start_pointH-1)][(start_pointV+n-1)] = 1
print "----------"
print Matrix[(start_pointH-1)][(start_pointV+n-1)]
print "----"
n = n + 1
ship_size_to_assign = ship_size_to_assign - 1
if start_point_direction == 2:
print "/////"
n = 0
if (start_pointH + type) <= 10:
while ship_size_to_assign != 0:
Matrix[start_pointH+n-1][start_pointV-1] = 1
n = n + 1
ship_size_to_assign = ship_size_to_assign - 1
if start_point_direction == 3:
print "/////"
n = 0
if (start_pointV - type) > 0:
while ship_size_to_assign != 0:
Matrix[start_pointH-1][start_pointV-n-1] = 1
n = n + 1
ship_size_to_assign = ship_size_to_assign - 1
if start_point_direction == 4:
print "/////"
n = 0
if (start_pointH - type) > 0:
while ship_size_to_assign != 0:
Matrix[start_pointH-1][start_pointV+n-1] = 1
n = n + 1
ship_size_to_assign = ship_size_to_assign - 1
print "####"
print Matrix[0]
print Matrix[1]
print Matrix[2]
print Matrix[3]
print Matrix[4]
print Matrix[5]
print Matrix[6]
print Matrix[7]
print Matrix[8]
print Matrix[9]
position_ship(5)
print "/////"
print Matrix[0]
print Matrix[1]
print Matrix[2]
print Matrix[3]
print Matrix[4]
print Matrix[5]
print Matrix[6]
print Matrix[7]
print Matrix[8]
print Matrix[9]
随机导入
行,列=10,10;
矩阵=[[0代表范围内的x(行)]代表范围内的y(列)]
战舰={“战列舰”:5,“巡洋舰”:4,“驱逐舰”:3}
任意左=1
def位置_船(类型):
行,列=10,10;
矩阵=[[0代表范围内的x(行)]代表范围内的y(列)]
发货尺寸到指定类型
start_pointV=5###random.randint(0,10)
start_pointH=5####random.randint(0,10)
起始点方向=1####random.randint(0,4)
打印起始点v
打印起始点H
打印起始点方向
起点\点\方向=1
如果起点\点\方向==1:
n=0
如果(起始点V+类型)为0:
当发送到指定的\u大小\u时!=0:
矩阵[start_pointH-1][start_pointV+n-1]=1
n=n+1
配送尺寸配送至配送=配送尺寸配送至配送-1
打印“#####”
打印矩阵[0]
打印矩阵[1]
打印矩阵[2]
打印矩阵[3]
打印矩阵[4]
打印矩阵[5]
打印矩阵[6]
打印矩阵[7]
打印矩阵[8]
打印矩阵[9]
船位(5)
打印“//”
打印矩阵[0]
打印矩阵[1]
打印矩阵[2]
打印矩阵[3]
打印矩阵[4]
打印矩阵[5]
打印矩阵[6]
打印矩阵[7]
打印矩阵[8]
打印矩阵[9]
因为函数外部的矩阵与函数内部的矩阵不同。后者是局部变量,前者是全局变量。它们恰好共享同一个名称。另外,您有一个Python列表,而不是数组。因此,这里的基本问题是您必须理解范围。在继续你的旅程之前,摸索一下是至关重要的。答案会转移到高级领域,但你可以有希望地阅读它,如果你一开始没有理解它,继续回到它。谢谢,我让它起作用了,我想我有点理解关于范围界定的规则。