我的海龟angie的代码出了什么问题?我要她在布拉德的正方形圆圈里盘旋。
我的代码:
import turtle
def draw_square(some_turtle):
for i in range (1,5):
some_turtle.forward(200)
some_turtle.right(90)
def draw_art():
window = turtle.Screen()
window.bgcolor("black")
#Turtle Brad
brad = turtle.Turtle()
brad.shape("turtle")
brad.color("yellow")
brad.speed(6)
brad.pensize(2)
for i in range(1,37):
draw_square(brad)
brad.right(10)
#Turtle Angie
angie = turtle.Screen()
angie.shape("turtle")
angie.color("blue")
angie.speed(5)
angie.pensize(2)
size=1
while (True):
angie.forward(size)
angie.right(91)
size = size + 1
window.exitonclick()
draw_art()
这是我想要的样子的照片。我想要布拉德显示的外部部分,然后里面的圆圈包括螺旋。它应该看起来像附加的螺旋图像。谢谢!
发布于 2017-01-05 03:34:01
除了angie = turtle.Turtle()
(而不是turtle.Screen()
)之外,您可能会注意到的另一个问题是windowexitonclick()
语句将不起作用。也就是说,单击窗口不会退出和关闭窗口,因为它发生在无限的while True:
循环之后:
while (True):
angie.forward(size)
angie.right(91)
size = size + 1
window.exitonclick()
因此永远不会到达。解决这个问题的最简单的方法是,在不增加计时器复杂性的情况下,像在其他地方使用的那样,使用一个带有范围的for
循环,这样angie
最终会停止并让下一行代码执行。
最后,它看起来不太像你的目标,因为brad
在他的正方形上画了五条边,而不是四条边。一旦我们修复了它,它看起来是正确的,angie
从中间而不是边缘开始。
使用上述代码和其他样式更改对代码进行重写:
from turtle import Turtle, Screen
def draw_square(some_turtle):
for _ in range(4):
some_turtle.forward(200)
some_turtle.right(90)
def draw_art():
# Turtle Brad
brad = Turtle(shape="turtle")
brad.color("yellow")
brad.pensize(2)
brad.speed("normal") # 6/normal is the default so don't need to do it
for _ in range(36):
draw_square(brad)
brad.right(10)
# Turtle Angie
angie = Turtle(shape="turtle")
angie.color("blue")
angie.pensize(2)
angie.speed(5) # slightly slower than brad
size = 1
for _ in range(300):
angie.forward(size)
angie.right(91)
size += 1
window = Screen()
window.bgcolor("black")
draw_art()
window.exitonclick()
一旦angie
完成了她的设计,您应该能够只需单击窗口就可以让它消失。对于这样一个复杂的设计,我会忍不住把turtle.speed()
设置为“快速”和“最快”,因为我没有耐心。(使用“最快”、“快速”、“正常”、“慢”和“最慢”来代替数字,以避免出现意外,除非您需要对速度进行非常精细的控制。)
发布于 2017-01-05 03:08:45
这一行是错误的:
angie = turtle.Screen()
它应该是:
angie = turtle.Turtle()
发布于 2017-01-05 03:08:52
angie
是Turtle
而不是Screen
。
将第22行更改为angie = turtle.Turtle()
https://stackoverflow.com/questions/41471370
复制相似问题