Давайте рассмотрим ваш код:
p = turtle.Pen()
p.reset()
Для чего нужен reset()
?Ничего еще не было установлено , так почему же сброс ?Не добавляйте код, который не продвигает вашу цель.Снова здесь:
p.down()
Ручка начинается вниз, поэтому нет необходимости ее менять.В этой команде:
p.speed(22)
Откуда взялся 22
?Документация для speed()
говорит, что аргумент от 1 («самый медленный») до 10 («быстрый»), где 0 означает «самый быстрый».Это превращает 22 в какое-то другое значение - если вы не знаете что, тогда не используйте его!Для ясности следует использовать символические альтернативы, такие как «медленный».
p.left(22222)
Откуда взялся 22222
?Почему ты удивлен, что у тебя нет треугольника?Для идеального равностороннего треугольника мы бы использовали 120 градусов, но нам не нужен идеальный треугольник, нам нужна спираль, поэтому мы добавим к этому значению градус или два.Почему это имя переменной:
dog = 0
Имена переменных должны пояснять, что мы делаем, а не скрывать это.Эта переменная будет циклически проходить через компонент «H» значения цвета «HSV», где «H» обозначает «оттенок».Итак, давайте использовать это.
Наконец, нам нужен один цикл, а не два, чтобы изменения рисунка и цвета происходили одновременно:
from turtle import Screen, Pen
import colorsys
screen = Screen()
screen.title("Rainbow Spiral")
pen = Pen()
pen.speed('fastest')
hue = 0.0 # range is 0.0 to 1.0
for i in range(200):
color = colorsys.hsv_to_rgb(hue, 1, 1) # pen wants RGB
pen.pencolor(color)
pen.forward(i * 2) # double size
pen.right(121) # 120 degrees is an equilateral triangle
hue += 0.005 # increment by 1/200
pen.hideturtle()
screen.exitonclick()
Обратите внимание, что я изменил left()
до right()
, чтобы соответствовать вашему примеру спирали.
ВЫХОД
Программы рассказывают историю.Тщательно выбирайте имена персонажей (переменные) и избегайте включения элементов (кода) в историю, которые не влияют на ее исход.