为什么 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), ")")
我在编写一个单独的程序时偶然发现了这个事实,并且很好奇它为什么会发生以及是否有办法阻止它发生。
下面的代码是一个简单的程序来说明这一点。乌龟最初似乎遵循一个网格,即平行于 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), ")")