用Python tu绘制螺旋

2024-05-15 20:11:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我的海龟安吉密码怎么了?我要她盘旋在布拉德的方形圆圈里。

我的代码:

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

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

bradangie


Tags: inrightforsizedefrangesomewindow
3条回答

angie是一个Turtle而不是一个Screen

将第22行改为 angie = turtle.Turtle()

这一行错了:

angie = turtle.Screen()

应该是:

angie = turtle.Turtle()

除了angie = turtle.Turtle()(不是turtle.Screen())之外,您可能会注意到的另一个问题是windowexitonclick()语句将没有任何效果。点击窗口不会退出并关闭窗口,因为它在无限循环之后:

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”和“fast”,因为我没有耐心。(除非您需要对速度进行非常精细的控制,否则请使用“最快”、“快速”、“正常”、“慢速”和“最慢”来代替数字,以避免意外。)

enter image description here

相关问题 更多 >