在python中,不能在网格的某个位置返回元素

2024-09-27 07:26:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python的初学者,我在一个项目中遇到了一些问题。你知道吗

我的网格如下所示:

class World(object):

def __init__(self):
    self.grid = []
    xsize = 20
    ysize = 20
    self.maxX = xsize
    self.maxY = ysize


    for irow in range(self.maxY):
        row = []
        for icol in range(self.maxX):
            row.append(None)
        self.grid.append(row)

    positions = []
    for i in range(self.maxX):
        for j in range(self.maxY):
            positions.append((i,j))

    numteam1 = 0
    numteam2 = 0
    numrobot = 0
    randpos = random.sample(positions, numteam1 + numteam2)
    team1 = randpos[0:numrobot-1]
    team2 = randpos[numrobot:]

    for point in team1:
        x = point[0]
        y = point[1]
        self.grid[y][x] = AttackRobot(1, x, y, self)
        self.grid[y][x] = MedicRobot(1, x, y, filename)
    for point in team2:
        x = point[0]
        y = point[1]
        self.grid[y][x] = AttackRobot(2,x,y,self)
        self.grid[y][x] = MedicRobot(2,x,y,self, filename)

然后我有了这个方法:

def test_position(self, x, y):
    if x <0 or x >= 20:
        return None
    if y <0 or y >= 20:
        return None
    else:
        return ( self.grid[y][x] = Robot)

这个函数应该返回网格上(x,y)处的元素

然后我在这个方法中使用这个方法:

def print_board(w):
print "-" * 60
for y in range(19,-1,-1):
    line = ""
    for x in range(0,20):
        r = w.test_position(x, y)
        if r == None:
            line += ".... "
        else:
            if isinstance(r, AttackRobot):
                rtype = "A"
            elif isinstance(r, MedicRobot):
                rtype = "M"
            else:
                rtype = "!"
            if r.get_team() == 1:
                line += "%s%02i%s " % (rtype, r.get_health(), r.get_direction())
            else:
                line += "%s%02i%s " % (rtype.lower(), r.get_health(), r.get_direction())
    print line
print "-" * 60

我犯了个错误。你知道吗

Traceback (most recent call last):
  File "T05.py", line 10, in <module>
    print_board(world)
  File "/Users/quentindumoulin/Desktop/test.py", line 19, in print_board
    if r.get_team() == 1:
AttributeError: 'bool' object has no attribute 'get_team'

Tags: inselfnoneforgetifdefline

热门问题