- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
你知道为什么当正方形的边是奇数时下面的代码会产生扭曲的正方形吗?
from turtle import *
s = 67.0
pu();fd(s/2.0);rt(90.0);fd(s/2.0);pd()
for _ in range(4):
rt(90.0)
fd(s)
pu();fd(-s/2.0);rt(-90.0);fd(-s/2.0);pd()
done()
我得到了这样的result
当边是偶数时,上面的代码运行良好。使用了 Python 3.5.0。我在linux、windows native和cygwin下都是一样的效果。
部分解决方案(编辑):我发现,当我向 s
添加非常小的数字时,一切正常... s = 67.0 + 1e-10
。但不知道为什么?
编辑:这是一个更复杂的程序,上面的解决方案不起作用。在这里,我再次开始在正方形中间绘制图形。我尝试了其他策略,从角落开始绘制,在这种情况下 1e-10
解决方案有效。
from turtle import *
from math import sqrt
from random import *
plg = 53 - 1e-10 # side size, even - works well, odd - not
sk = sqrt(2) / 2.0
speed(0)
def square(q):
s = q / 2.0
penup()
forward(s)
right(90)
forward(s)
pendown()
begin_fill()
for i in range(4):
right(90)
forward(q)
end_fill()
penup()
forward(-s)
right(-90)
forward(-s)
pendown()
def triangle(q,rot):
begin_fill()
right(45 + rot)
forward(q * sk)
right(-135)
forward(q)
right(-90)
forward(q)
right(-135)
forward(q * sk)
end_fill()
setheading(0)
pu(); forward(-plg*10/2); left(90); forward(plg*10/2);right(90); pd()
for y in range(10):
p = pos()
for x in range(10):
i = randint(0,1)
if i==0:
triangle(plg,randrange(0,360,90))
else:
square(plg)
pu(); forward(plg); pd()
pu();setpos(p);right(90);forward(plg);left(90);pd()
done()
最佳答案
一些观察:
1) Remove 'right()' from the 5th line assures a regular square
2) Adding 'time.sleep(1)' just before 'for _ in range(4):' doesn't help in any way, so we can discard a timing problem
3) 'print heading()' after every 'rt()' prints the correct values, we can also discard problems of angulation
4) Drag the window very quickly around the screen changes the appearance of the square, this is definitely a graphical error
5)
s = 66.9999999999999
returns an even square,s = 66.99999999999999
(adding 1 extra decimal) returns as the error6) Even after compilation of the code, the square stills uneven
turtle 来源:http://svn.python.org/projects/python/branches/pep-0384/Lib/turtle.py
我更改了您的代码,因此它绘制了一个简单的角度:
pu();fd(s/2);rt(90.0);pd()
for x in range(2):
rt(90.0)
fd(s)
done()
这和你的问题一样,但是如果我将 fd(s/2)
更改为 fd(s)
一切都会好转,为什么?
这只是一个猜测(不要把它当作绝对真理,我只是好奇并试图弄清楚)但我认为这取决于你的屏幕分辨率,odd_number%2
always返回 1,并且线条错位 1 个像素,如果值从 67 增加到 67.1,屏幕会正确读取它并平分空间。 (我的是 1600x900)
如果有人有更合理的解释,请写下来!这个问题很有趣!
关于蟒 turtle : why centered square for odd size is uneven/distorted?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33199445/
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
如果 turtle 在一组坐标之上,我想让 turtle 回到地板上: 像这样: floor = -323 if turtle above floor: turtle.goto(floor)
我正在用Python语言编写一个小的文本库游戏。在使用Turtle函数数字输入和文本输入时,会出现一个文本字段,要求用户输入。当文本输入字段出现时,您可以开始输入,而不需要在输入字段中单击,但对于数字
我试图让 turtle 从程序开始就隐藏起来,但即使在放置 t.hideturtle() 之后也是如此。在我将 turtle 声明为变量的正下方, turtle 似乎仍然出现在绘图的中间。 impor
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我将 turtle 设置为最快,当我单独运行第一个循环时,效果很好,但随着我添加更多,它变得与仅单独执行第一个循环时相当。我不知道这是否只是因为绘图的复杂性,但完成形状需要相当长的时间。我可以做些什么
如何在不显示绘图过程的情况下显示最终绘图?我使用的是Python 3.4,这个项目是创建一个射箭游戏。例如,如果我使用以下代码: import turtle screen = turtle.Scree
Python 2.7 版本中的 turtle 和 Turtle 有何不同? import turtle star = turtle.Turtle() for i in range(50): s
如何告诉 turtle 面向 turtle 图形中的方向?我希望 turtle 能够转动并面向一个方向,无论其原始位置如何,我怎样才能实现这一目标? 最佳答案 我认为 turtle.setheadin
如何让 4 只不同的 turtle 同时移动?另外,如何为 Turtle.shape 方法制作人形?我知道有一个名为 register_shape 的 Screen 方法,但我找不到关于它的任何文档。
我设置了热键并且能够移动 turtle ,但是当我运行代码时,如果我超过 x 和 y 值,则不会发生任何事情..也没有错误。怎么了? if (Alex.xcor()>50 or Alex.xcor()
方向: 我创建了以下函数以允许用户将 turtle 更改为他/她选择的图像,然后随时将其标记到 Canvas 上: def TurtleShape(): try: # Tkin
我用黑色 turtle 创建了一个形状(白色矩形)而不是一条线!然后我移动屏幕底部的白色形状以创建一个必须从左向右移动的桨。我必须保持形状但删除黑色箭头。怎么办? from turtle import
我想创建 SpaceInvaders 游戏,但敌人不会被击落,而是会向玩家射击。我使用 .goto() 方法实现它,如下所示: bullet2.goto(player.xcor(),player.yc
出于教学目的,我需要一个图形默认值列表。这是我现在所拥有的: background white canvas 950W by 800H dot 5 (pixels) fil
这个问题在这里已经有了答案: Importing installed package from script with the same name raises "AttributeError: m
我目前正在上初级编程课,正在完成作业。现在,我必须用模块 turtle build 3 个房子(我完成了): def drawBody(mover): #Rectangle part
我有一些代码如下: # My code here turtle.bye() 在那之后,有什么办法可以重新打开 turtle 窗口。我知道您可以执行 turtle.clearscreen() 但这不会关
这段代码设置了一只 turtle 放置的邮票背景。另一只 turtle (其形状来自导入的图像文件)在背景上移动。但是,只要第二只 turtle 位于第一只 turtle 放置的图章上方,它就不可见。
我的程序中有两只 turtle 。它们碰撞在一起时发生了动画,但我希望一只 turtle 位于另一只 turtle 之上,如下所示: 所以,我的问题是 - 我怎样才能实现这一点 - 是否有一行简单的代
我是一名优秀的程序员,十分优秀!