为什么 Python 乌龟不完全遵循网格?

Why does Python turtle not exactly follow a grid?

我在编写一个单独的程序时偶然发现了这个事实,并且很好奇它为什么会发生以及是否有办法阻止它发生。

下面的代码是一个简单的程序来说明这一点。乌龟最初似乎遵循一个网格,即平行于 x 轴或 y 轴行进。这由海龟打印的前三个坐标显示。在两次改变方向后,乌龟似乎偏离平行于 x 或 y 轴,如随后的坐标打印输出所示,即使航向应始终为 90 的倍数。


t = turtle.Turtle()
window = turtle.Screen()

    
def draw_square():
    for i in range(4):
        print("Coordinates of turtle: (", t.xcor(), ", ", t.ycor(), ")")
        t.forward(100)
        t.left(90)


def draw_line():
    for i in range(10):
        t.forward(20)
        print("Coordinates of turtle: (", t.xcor(), ", ", t.ycor(), ")")
    
draw_square()
draw_line()

这似乎只是一个 floating-point 精度错误。

您看到的差异非常小,您可以忽略它们。

如果您希望看到更清晰的数字,可以在打印它们之前将它们四舍五入到小数点后几位(本例中为 3):

print("Coordinates of turtle: (", round(t.xcor(), 3), ", ", round(t.ycor(), 3), ")")