在下面的代码中,绘制的第二个框搞砸了。它几乎就像线条不是直线上下画,而是略微倾斜。我试图制作样本MCVE。
import turtle, os
turtle.speed(0)
iOneAndHalve = 1.5 # Increasing to 1.501 makes a big difference
Q = 0
iSize = 80
def box(x):
for i in xrange(x):
turtle.forward(i+1)
turtle.left(90)
global Q
Q = i
box(iSize)
turtle.up()
turtle.forward(iOneAndHalve*Q) # <----------
turtle.down()
box(iSize)
os.system("pause")
如果我将iOneAndHalve
设置为1.501而不是1.5,问题就解决了。框的大小(因此Q
似乎没有区别。)
我不知道为什么会这样做,这闻起来像是一个便宜的修复。
造成这种(不稳定)行为的原因是什么?我应该如何正确解决这个问题?
注意:我意识到编码的风格是不合标准的。我担心这是MCVE的结果。
答案 0 :(得分:2)
这似乎是舍入问题,因为用turtle.forward(iOneAndHalve*Q)
替换turtle.forward(round(iOneAndHalve * Q, 0))
可以解决问题。