我遇到以下问题:我需要将坐标附加到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
上。
答案 0 :(得分:0)
有两个即时错误和一个大错误。首先,@ quamrana在注释中指出了此错误:
[(t1.xcor(), t1.ycor())] in obstacles
obstacles
是list
中的tuple
,因此我们应该搜索list
,而不是tuple
中的tuple
。 :
(t1.xcor(), t1.ycor()) in obstacles
或简单地:
t1.position() in obstacles
第二个立即错误是此行:
obstacles.append((t1.xcor , t1.ycor))
将方法xcor
和ycor
添加到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画线的每个坐标
这是一个不同的问题-建议您解决以上问题,并提出一个有关如何执行此操作的新问题,因为当前您仅添加线的端点,而不是线的每个坐标。也许有多种方法可以解决此问题。