如何将坐标附加到列表中

时间:2019-05-22 10:54:53

标签: python list coordinates turtle-graphics

我遇到以下问题:我需要将坐标附加到list中,但是它不起作用。我没有收到错误,但未添加任何内容!

我的代码中的

t1是乌龟,我想将t1.xcor() t1.ycor()插入到列表obstacles中,其格式与其他元素相同:{{1} }。

(x, y)

我想附加Tron正在画线的每个坐标!并且这些坐标必须附加到列表obstacles = [(-300,-300),(-200,-200),(-100,-100),(100,100), (200,200),(300,300)] def is_next_move_legal(heading:int, step:int) -> bool: next_step = step if heading == 90 or heading == 270: if heading == 90: next_step+= (t1.ycor()) else: next_step-= (t1.ycor()) else: if heading == 0: next_step+= (t1.xcor()) else: next_step-= (t1.xcor()) print(f" x={t1.xcor()}, y={t1.ycor()}") print(f" next_step={next_step}") #Extend List with Coordinates that Tron used obstacles.append((t1.xcor , t1.ycor)) print("######################### \n") print("Obstacles: \n") print(*obstacles, sep='\n') print("######################### \n") if next_step > 300 or [(t1.xcor(), t1.ycor())] in obstacles: global tron_end tron_end = True quit_this() return False return True 上。

1 个答案:

答案 0 :(得分:0)

有两个即时错误和一个大错误。首先,@ quamrana在注释中指出了此错误:

[(t1.xcor(), t1.ycor())] in obstacles

obstacleslist中的tuple,因此我们应该搜索list,而不是tuple中的tuple。 :

(t1.xcor(), t1.ycor()) in obstacles

或简单地:

t1.position() in obstacles

第二个立即错误是此行:

obstacles.append((t1.xcor , t1.ycor))

将方法xcorycor添加到obstacles,而不是龟的坐标。您想要:

obstacles.append((t1.xcor(), t1.ycor()))

或简单地:

obstacles.append(t1.position())

现在出现大图问题,上述所有问题均无效。乌龟在浮点平面上徘徊。从长远来看,直接将乌龟float坐标与list坐标的int坐标进行比较是一个失败者。当您测试(100.00007, 100)时,乌龟可能在(100, 100)处。一种解决方法是将乌龟的distance()方法结果与较小的“接近度”值进行比较。

在这种情况下,一种简单的方法是不直接存储或比较乌龟坐标,而是先将它们转换为int

obstacles = [(-300, -300), (-200, -200), (-100, -100), (100, 100), (200, 200), (300, 300)]

def is_next_move_legal(heading, step):

    next_step = step

    if heading == 90 or heading == 270:
        if heading == 90:
            next_step += t1.ycor()
        else:
            next_step -= t1.ycor()
    else:
        if heading == 0:
            next_step += t1.xcor()
        else:
            next_step -= t1.xcor()

    print(" x={}, y={}".format(*t1.position()))
    print(" next_step={}".format(next_step))

    print("######################### \n")
    print("Obstacles: \n")
    print(*obstacles, sep='\n')
    print("######################### \n")

    x, y = int(t1.xcor()), int(t1.ycor())

    if next_step > 300 or (x, y) in obstacles:
        global tron_end
        tron_end = True
        quit_this()
        return False

    # Extend List with Coordinates that Tron used
    obstacles.append((x, y))

    return True
  

我想附加Tron画线的每个坐标

这是一个不同的问题-建议您解决以上问题,并提出一个有关如何执行此操作的新问题,因为当前您仅添加线的端点,而不是线的每个坐标。也许有多种方法可以解决此问题。