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.