我的 turtle 安吉代码有什么问题?我想让她在布拉德的方圆内盘旋。

我的代码:

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()

这是我想要的照片。我想要布拉德的外部显示,然后在里面的圆圈包括螺旋。它应该看起来像附加的螺旋图像。谢谢!

最佳答案

除了 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() 设置为“fast”和“fastest”,因为我没有耐心。 (代替数字使用“最快”、“快”、“正常”、“慢”和“最慢”等词来避免意外,除非您需要非常精细地控制速度。)

python - 使用 Python  turtle 在螺旋中绘制螺旋-LMLPHP

关于python - 使用 Python turtle 在螺旋中绘制螺旋,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41471370/

10-13 07:13