Научимся работать со списками данных. Сначала мы
создадим список возможных цветов:
colors = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'magenta', 'black',
'gray', 'lightgreen']
А ещё ускорим работу черепашки: speed(100) и используем команду goto(x, y) для перехода в точку с координатами (x, y).
|
Теперь, безо
всякой случайности, выберем оранжевый и синий цвет (нумерация идет с нуля):
оранжевый — colors[1]
синий – colors[5]
синий – colors[5]
Убедимся,
что это работает:
from turtle import *
|
from random import randrange
as rnd
|
colors = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'magenta', 'black',
'gray', 'lightgreen']
|
color(colors[5],colors[1])
|
speed(100)
|
up()
|
for z in range(12):
|
x = rnd(-200,200)
|
y = rnd(-200,300)
|
goto(x,y)
|
down()
|
begin_fill()
|
circle(rnd(10,50))
end_fill()
up()
|
done()
|
Остался один
шаг – выбирать случайный номер. Для этого нужно знать длину списка. Можно
написать так: rnd(10), но так делать не стоит. Ведь мы можем захотеть удалить
или добавить цвет. Придется переделывать код программы, что не очень удобно.
Лучше мы узнаем длину списка: len(colors), и это значение подставим в функцию
rnd: rnd(len(colors)). Теперь по номеру возьмем цвет:
from turtle import *
|
from random import randrange
as rnd
|
colors = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'magenta', 'black',
'gray', 'lightgreen']
|
color(colors[rnd(len(colors))],colors[rnd(len(colors))])
|
speed(100)
|
up()
|
for z in range(12):
|
x = rnd(-200,200)
|
y = rnd(-200,300)
|
goto(x,y)
|
down()
|
begin_fill()
|
circle(rnd(10,50))
|
end_fill()
|
up()
|
done()
|
Работает, но
… цвет одинаковый! При каждом запуске – свой, но одинаковый у всех окружностей.
Так не пойдет – нужно перенести выбор цвета внутрь цикла:
from turtle import *
|
from random import randrange
as rnd
|
colors = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'magenta', 'black',
'gray', 'lightgreen']
|
speed(100)
|
up()
|
for z in range(20):
|
color(colors[rnd(len(colors))],colors[rnd(len(colors))])
|
x = rnd(-200,200)
|
y = rnd(-200,300)
|
goto(x,y)
|
down()
|
begin_fill()
|
circle(rnd(10,50))
|
end_fill()
|
up()
|