Как правильно выбирать цвета при использовании черепахи Python? - PullRequest
0 голосов
/ 04 июня 2018

У меня есть программа Python ниже, чтобы нарисовать квадратный дизайн, используя цвета, перечисленные ниже.Программа применяет только розовый для всех полей, как мне сделать синтаксис для повторения цветов в последовательности, перечисленной ниже?

import turtle

def main():
    t = turtle.Turtle()
    t.hideturtle()
    t.speed(500)
    color = ["pink", "navy blue","red","forest green","cyan","magenta"]
    squaredesign(t,color)

def squaredesign(t,color):
    x = 100
    y = 100
    z = 1
    c = 0

    for i in range(10):

          t.up()
          t.goto(x,y)
          t.down()

          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
          t.pencolor(color[c])

main()

1 Ответ

0 голосов
/ 04 июня 2018

Мне нравится использовать функцию 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()

, который исключает дополнительный импорт.

...