简体   繁体   中英

How to simplify Turtle Python code for it to decrease by 10 everytime?

I'm trying to make this pattern in python using Turtle and I am finding a way to simplify the code. But I can't just seem to get it to work. I have tried using the for i in range loop. Im trying to get the forward and back to decrease and increase by 10 everytime a sequence is done for 20 times.

from turtle import*

left(90)
forward(200)
back(200)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(190)
back(190)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(180)
back(180)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(170)
back(170)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(160)
back(160)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(150)
back(150)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(140)
back(140)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(130)
back(130)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(120)
back(120)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(110)
back(110)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(100)
back(100)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(90)
back(90)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(80)
back(80)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(70)
back(70)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(60)
back(60)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(50)
back(50)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(40)
back(40)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(30)
back(30)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(20)
back(20)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(10)
back(10)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(10)
back(10)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(20)
back(20)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(30)
back(30)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(40)
back(40)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(50)
back(50)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(60)
back(60)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(70)
back(70)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(80)
back(80)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(90)
back(90)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(100)
back(100)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(110)
back(110)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(120)
back(120)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(130)
back(130)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(140)
back(140)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(150)
back(150)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(160)
back(160)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(170)
back(170)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(180)
back(180)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(190)
back(190)
right(90)
penup()
forward(10)
pendown()

left(90)
forward(200)
back(200)
right(90)
penup()
forward(10)
pendown()

This is the pattern that needs to be made. 海龟设计

Thank You :"D

This does the trick, two while loops for both sides of the path.

from turtle import *

YMIN = 10 # min height
YMAX = 200 # max height
YSTEP = 10 # step value

def draw_line(line_length):
    left(90)
    forward(line_length)
    back(line_length)
    right(90)
    penup()
    forward(10)
    pendown()

def main():
    # starting length
    line_length = 200

    # draw lines until we hit min height
    while line_length >= YMIN:
        draw_line(line_length)
        line_length -= YSTEP

    # draw lines until we hit max height
    while line_length <= YMAX:
        draw_line(line_length)
        line_length += YSTEP

if __name__ == '__main__':
    main()

Let's have some fun with this and throw a separate turtle at every vertical line and let them draw simultaneously, dropping out when they reach their goal:

from turtle import Screen, Turtle

MAXIMUM = 200
DELTA = 10

def move():
    viable = 0

    for turtle in screen.turtles():
        if turtle.isvisible():
            if turtle.ycor() < abs(turtle.xcor()):
                turtle.forward(1)
                viable += 1
            else:
                turtle.hideturtle()

    screen.update()

    if viable:
        screen.ontimer(move)

screen = Screen()
screen.mode('logo')  # make default heading straight up
screen.tracer(False)

for x in range(-MAXIMUM, MAXIMUM + DELTA, DELTA):
    turtle = Turtle(visible=False)
    turtle.penup()
    turtle.setx(x)
    turtle.pendown()
    turtle.showturtle()

move()

screen.exitonclick()

在此处输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM