Мне нравится использовать функцию cycle
из itertools
для этой цели:
from itertools import cycle
from turtle import Turtle, Screen
COLORS = ["pink", "navy blue", "red", "forest green", "cyan", "magenta"]
def main():
t = Turtle(visible=False)
t.speed('fastest')
color_iter = cycle(COLORS)
squaredesign(t, color_iter)
def squaredesign(t, color_iter):
x = 100
y = 100
for _ in range(10):
t.pencolor(next(color_iter))
t.penup()
t.goto(x, y)
t.pendown()
t.goto(x - x - x, y)
t.goto(x - x - x, y - y - y)
t.goto(x, y - y - y)
t.goto(x, y)
x -= 10
y -= 10
screen = Screen()
main()
screen.mainloop()
В ней никогда не заканчиваются цвета, поскольку она начинается заново с начала после достижения конца.Оператор модуля (%) - это еще один подход, который можно использовать для решения этой проблемы:
from turtle import Turtle, Screen
COLORS = ["pink", "navy blue", "red", "forest green", "cyan", "magenta"]
def main():
t = Turtle(visible=False)
t.speed('fastest')
color_index = 0
squaredesign(t, color_index)
def squaredesign(t, color_index):
x = 100
y = 100
for _ in range(10):
t.pencolor(COLORS[color_index])
t.penup()
t.goto(x, y)
t.pendown()
t.goto(x - x - x, y)
t.goto(x - x - x, y - y - y)
t.goto(x, y - y - y)
t.goto(x, y)
x -= 10
y -= 10
color_index = (color_index + 1) % len(COLORS)
screen = Screen()
main()
screen.mainloop()
, который исключает дополнительный импорт.