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列表,而不是数组。因此,这里的基本问题是您必须理解范围。在继续你的旅程之前,摸索一下是至关重要的。答案会转移到高级领域,但你可以有希望地阅读它,如果你一开始没有理解它,继续回到它。谢谢,我让它起作用了,我想我有点理解关于范围界定的规则。